Сортировка и переименование номеров.

Придумываем методы решения заданий заказчика.

Сортировка и переименование номеров.

Сообщение Lehon » Вт апр 13, 2010 12:02 pm

Привет всем. Жена очень просит сделать ей обработчик для 1с, дала мне 2книги по конфигуратору. Сижу, с открытым конфигуратором, и книгой, понимая что надо сделать но КАК? Даже в заголовках оглавления ничего подходящего не найду.
Ситуация в чем. - Нужно создать некую кнопку что бы в произвольном журнале можно было указать с такой то по такую то дату переименовать все порядковые номера документов, где меньшая дата - меньший номер, а большая - больший. Жена говорит что это очень просто должно быть. Я продвинулся только до открытия пустого окна нового обработчика...

Lehon
Любопытный человек
 
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 11:56 am

Re: Сортировка и переименование номеров.

Сообщение Андрей Громов » Вт апр 13, 2010 2:12 pm

Lehon писал(а):Жена говорит что это очень просто должно быть.

Жене, конечно, видней, но сообщите для начала нам, есть ли у вас навыки конфигурирования вообще. Если вы - не программист, а жена требует написать обработку в 1С, то либо вы - безработный, либо... одно из двух.
Нужно создать некую кнопку что бы в произвольном журнале можно было указать с такой то по такую то дату переименовать все порядковые номера документов, где меньшая дата - меньший номер, а большая - больший.

Например, в период с 01.04.2010 по 13.04.2010 расходные накладные выписаны не последовательно, поэтому их номера разбросаны не по порядку: 16, 17, 21, 18, 22, 19,20. Нужно сделать так, чтобы номера накладных в указанном интерсвле дат располагались в порядке возрастания.
Интересная задача.

Вам нужно сделать два списка значений. В первый список значений поместите документы. Параллельно наполняйте второй список значений номерами документов, которые вы добавляете в первый список.
Потом вы сортируете второй список значений по возрастанию. В результате вы имеете список номеров, выстроенных в порядке возрастания, который вы хотите иметьв результате.
Перебираете номера из второго списка значений. По порядковому номеру значения во втором списке берёте документ из первого списка и меняете его номер на номер из второго списка.
Всё.

При этом у вас возникнут проблемы с уникальностью номеров документов. Но это тоже можно обойти.
Аватара пользователя
Андрей Громов
Администратор
 
Сообщения: 718
Зарегистрирован: Вт мар 06, 2007 11:41 pm

Re: Сортировка и переименование номеров.

Сообщение Lehon » Вт апр 13, 2010 5:27 pm

Ненормированный график, плавающие выходные. В данный момент аж 3 подряд.
Навыков конфигурирования нет, когда то писал в с++ на уровне чуть выше чем хело ворд.

Мозгом я понял, но опять же как обьяснить программе? Докопался до помощника синтаксиса, изучаю.
Lehon
Любопытный человек
 
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 11:56 am

Re: Сортировка и переименование номеров.

Сообщение Андрей Громов » Вт апр 13, 2010 6:52 pm

Навыков конфигурирования нет, когда то писал в с++ на уровне чуть выше чем хело ворд.

Хочу заметить, что программисты 1С сейчас очень хорошо зарабатывают. Так что вы однажды сможете быть очень благодарны своей жене, как и многие мужчины, которым жёны дали волшебный пендель.
Мозгом я понял, но опять же как обьяснить программе? Докопался до помощника синтаксиса, изучаю.

Понять мозгом - это самое главное. Когда я работаю над задачей, я сначала понимаю её мозгом, придумываю алгоритм. И на это могут уходить недели. Но когда мозг понял и алгоритм придуман, то потом уходит совсем немного времени, чтобы записать в нужные места буквочки на экране ;)

К сожалению, я не знаю Восьмёрку и ничем конкретным вам помочь не могу. Моя помощь может выражаться лишь в том, чтобы дать вам готовый алгоритм, что я и сделал. Ещё могу расписать порядок действий:
1. Создать СписокЗначений1.
2. Создать СписокЗначений2.
3. Выбрать документы в интервале дат.
4. Документы добавлять в СписокЗначений1.
5. Номера документов добавлять в СписокЗначений2.
6. Сортировать СписокЗначений2.
7. Выбрать строки из СпискаЗначений2.
8. По порядковому номеру строки СпискаЗначений2 получить значение из СпискаЗначений1.
9. Найти документ по значению из СпискаЗначений1.
10. Изменить номер найденного документа.
11. Записать документ с новым номером.

Ещё раз повторю, что у вас могут возникнуть проблемы с уникальностью номеров документов. Это можно обойти.

А по поводу обработки, то большое достигается малыми шагами. Сначала научитесь выбирать документы заданного вида в интервале дат. Потом научитесь, как работать со СпискамиЗначений (возможно, в Восьмёрке они называются иначе). И так далее.

Надеюсь, ваша жена останется довольна. И мужем тоже :)
Аватара пользователя
Андрей Громов
Администратор
 
Сообщения: 718
Зарегистрирован: Вт мар 06, 2007 11:41 pm

Re: Сортировка и переименование номеров.

Сообщение Lehon » Пн май 24, 2010 10:26 pm

Жена тут мне упростила задачку )
Нужно сделать простую вещь. Есть справочник номенклатуры, который разбит на папки, внутри которых сама номенклатура. У нее в числе прочих есть свойство "номенклатурная группа", которое пустое. Его нужно заполнить для каждой строки в справочнике определенным значением из справочника номенклатурных групп. Можно было бы и вручную, но строк несчетное количество.
Сделал просто кнопку которая по нажатию и должна заполнить все строки этим значением, но собственно пока ничего не получается...

Код: Выделить всё
Процедура КнопкаВыполнитьНажатие (Кнопка)
  Группа=Справочники.Номенклатура.Выбрать();
  Пока Группа.Следующий() Цикл
    ПолеЭлемента=Справочники.НоменклатурныеГруппы.Выбрать();
    Группа.НоменклатурнаяГруппа=ПолеЭлемента;
    Группа.НоменклатурнаяГруппа.Записать();
  КонецЦикла;
КонецПроцедуры


Выходит ошибка "Поле обьекта недоступно для записи (НоменклатрунаяГруппа)".

Как выполнить задачу? В чем у меня ошибка?
Lehon
Любопытный человек
 
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 11:56 am

Re: Сортировка и переименование номеров.

Сообщение Андрей Громов » Пн май 24, 2010 11:36 pm

Молодой человек, скажите, мы здесь, по-вашему, чем занимаемся? Помогаем вам решать задачки, которые задаёт вам ваша жена? Мы здесь занимаемся вашим обучением? Или мы пытаемся спасти вашу семью от голодной смерти?

Вы не удосужились хоть как-то прокомментировать мой предыдущий данный вам ответ. И снова лезите со своими, извините, тупыми вопросами!

Всё, вы обиделись? Вот и прекрасно! Идите на другой форум.

И анекдот вдогонку. Прапорщик вызывает рядового и даёт приказ:
- Рядовой Иванов. Возьмите лом и подметите плац!
- Но ведь подметать лучше метлой!
- Мне наплевать, чем ты будешь подметать! Мне главное, чтобы ты за*бался!

Если вашей жене жействительно нужно решение её задач, тогда пускай она приходит сюда и просит помощи. На этом форуме люди решают проблемы с 1С. Здесь семейные проблемы не решают!
Аватара пользователя
Андрей Громов
Администратор
 
Сообщения: 718
Зарегистрирован: Вт мар 06, 2007 11:41 pm

Re: Сортировка и переименование номеров.

Сообщение Lehon » Вт май 25, 2010 7:36 am

Извините.
Lehon
Любопытный человек
 
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 11:56 am

Re: Сортировка и переименование номеров.

Сообщение Lehon » Вт май 25, 2010 8:32 pm

Код: Выделить всё
Процедура КнопкаВыполнитьНажатие (Кнопка)
  Сообщить ("Обработка начата");
  Группа=Справочники.Номенклатура.ВыбратьИерархически();
  Пока Группа.Следующий() Цикл
    ПолеЭлемента=Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000001");
    Док = Группа.ПолучитьОбъект();
    Если Не Док.ЭтоГруппа Тогда
      Док.НоменклатурнаяГруппа = ПолеЭлемента;
      Док.Записать();
    КонецЕсли;
  КонецЦикла;
  Сообщить ("Обработка завершена");
КонецПроцедуры
Lehon
Любопытный человек
 
Сообщения: 6
Зарегистрирован: Вт апр 13, 2010 11:56 am


Вернуться в Алгоритмы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1