Вот берем типовую ТиС, Док.Реализация.МодульДокумента
И встречаем вот такой код
Процедура ФильтрЗаявок(ТаблицаТМЦ, ТаблицаУслуг, ВремЗаявки, ВремЗаказыЗаявки)
Перем ТаблицаНоменклатуры;
ВремЗаявки.УстановитьЗначениеФильтра("Фирма",ФирмаДляОстатковТМЦ, 2);
ВремЗаявки.УстановитьЗначениеФильтра("ДоговорПокупателя", Договор,1);
Если ИтогиАктуальны()=0 Тогда
ТаблицаТМЦ.Выгрузить(ТаблицаНоменклатуры);
Если ТаблицаУслуг.КоличествоСтрок()>0 Тогда
БылоСтрок = ТаблицаНоменклатуры.КоличествоСтрок();
ТаблицаНоменклатуры.КоличествоСтрок(БылоСтрок+ТаблицаУслуг.КоличествоСтрок());
ТаблицаНоменклатуры.Заполнить(ТаблицаУслуг,БылоСтрок+1,ТаблицаНоменклатуры.КоличествоСтрок());
КонецЕсли;
СписокТМЦ = СоздатьОбъект("СписокЗначений");
ТаблицаНоменклатуры.Выгрузить(СписокТМЦ,,,"Номенклатура");
ВремЗаявки. УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2);
ВремЗаказыЗаявки.УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2);
ВремЗаявки. ВременныйРасчет();
ВремЗаказыЗаявки.ВременныйРасчет();
КонецЕсли;
КонецПроцедуры // ФильтрЗаявок()
Возникает вопрос: почему для временного расчета фильтр по списку номенклатуры устанавливается, а для ТА - нет...? Обоснований/предположений этому не нашел. Почему не наложить фильтр по номенклатуре и на итоги для ТА?
Аналогичный подход и здесь:
Процедура глФильтрОстатковТМЦ(Конт,ТаблНоменклатуры, СписокПараметров, ВремОстаткиТМЦ, ВремРезервыТМЦ = "") Экспорт
ФирмаДляОстатковТМЦ = СписокПараметров.Получить("ФирмаДляОстатковТМЦ");
ВремОстаткиТМЦ. УстановитьЗначениеФильтра("Фирма" ,ФирмаДляОстатковТМЦ,2);
Если (ТипЗначенияСтр(ВремРезервыТМЦ) = "Регистр") Тогда
ВремРезервыТМЦ.УстановитьЗначениеФильтра("Фирма" ,ФирмаДляОстатковТМЦ,2);
КонецЕсли;
Если Конт.ИтогиАктуальны()=0 Тогда
// подготовка фильтров
СписокТМЦ = СоздатьОбъект("СписокЗначений");
ТаблНоменклатуры.Выгрузить(СписокТМЦ,,,"Номенклатура");
// установка фильтров
ВремОстаткиТМЦ.УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2);
ВремОстаткиТМЦ.ВременныйРасчет();
Если (ТипЗначенияСтр(ВремРезервыТМЦ) = "Регистр") Тогда
// установка фильтров
ВремРезервыТМЦ.УстановитьЗначениеФильтра("Номенклатура",СписокТМЦ,2);
ВремРезервыТМЦ.ВременныйРасчет();
КонецЕсли;
КонецЕсли;
КонецПроцедуры // ФильтрОстатковТМЦ()
Что я не понимаю? Какие тонкости не волоку?
Чёто понаперемудрили там сильно.
Пара мелких замечаний для начала:
1. То что в УстановитьЗначениеФильтра() для Фирмы указан вариант отбора "2", а для Договора указан вариант отбора "1", очень интересный моментик, взял на заметку.
2. В документах ОтчетККМ и РеализацияРозница функция ФильтрЗаявок() описана также, но используется в таком виде
...
ФильтрЗаявок(ТаблицаТМЦ, ТаблицаУслуг, ВремЗаявки, ВремЗаказыЗаявки);
Если ИтогиАктуальны() = 0 Тогда
ВремЗаявки.ВременныйРасчет();
ВремЗаказыЗаявки.ВременныйРасчет();
КонецЕсли;
...
Т.е сначала в ФильтрЗаявок() делаем ВременныйРасчет, потом после вызова делаем ВременныйРасчет ещё раз. Прикол в том, что из-за особенностей временного расчета на быстродействие это не влияет, но сам факт повторного вызова временного расчета - некрасиво.
Что касается твоего вопроса:
УстановитьЗначениеФильтра - действует, в частности, для 1.РассчитатьРегистрыНа (временного расчета) и для 2.ВыгрузитьИтоги() (получения таблицы итогов).
Так что смысла ставить фильтр по списку ТМЦ именно в ФильтрЗаявок() - нет, если временные итоги не рассчитываются.
Но для последующих ВыгрузитьИтоги() фильтр всё равно будет нужен - чтобы ТаблицаИтогов получилась поменьше. Поэтому в ФильтрЗаявок() для Регистр.ВремЗаявки ставят первые два фильтра Фирма и Договор. Фильтр по ТМЦ будет устанавливаться позже - в процедуре ДвижениеЗаявокПокупателя() по каждому отдельному ТМЦ при переборе в цикле. Там же пойдет перебор по заявке и будет установлен 4й и последений фильтр - по заявке. Чтобы при вызове процедуры ПогаситьЗаявки() можно было сделать
ВремЗаявки.ВыгрузитьИтоги(ТИЗаявки,1,1)и в ТИЗаявки попали только итоги по всем четырем предварительно установленным измерениям Фирма.
Немножка перенаворочено, но в целом, в рамках логики.
По п.1 про список фирм и договор
- тут как раз все понятно.
Договор в рамках типовой никак к фирме не привязан (в своей конторе это пришлось допилить т.к. надо было).
При этом несколько фирм могут относиться к одному собственному юрлицу. И много всяких "холденгов" где одному и тому же клиенту могут грузить и от ооо и от ип, и в рамках упручета это один "канал сбыта", и делить на разные договора - излишне усложнять.
Спасибо за пояснения.
Так примерно и думал, но грызли сомнения.
.
Дорабатывал погашение заявок реализациями строго по заявке-основанию, а не в рамках договора.
Получилось удачно, точечные исправления всего в фильтрзаявок, движение заявок и глСписаниеОстатковТМЦ.
.
Потому что все клиенты, которые встречались - мелкота, и совсем не приветствуют, когда реализация гасит кские-то другие заявки кроме заявки основания.
Цитата: Злоп от 17 мая 2026, 14:05- тут как раз все понятно.
Возможно, вопросики скорее к коду
ФирмаДляОстатковТМЦ = глФирмаДляОстатковТМЦ(Фирма);мимо которого я пробежал - совсем неочевидно, что глФирмаДляОстатковТМЦ - возвращает, в основном, список значений, а значение конкретного элемента - только для "Контроль отрицательных остатков - По фирме". Назвали бы СписокФирмДляОстатковТМЦ - было бы понятнее.
Ну это так, попутные мелочи.
Там ещё был забавный момент, я в модуле документа Рализация нашел описание функции ФильтрЗаявок(), а вот её вызов нет. Потому что как обычно искал по "ФильтрЗаявок(", а в коде вызов функции выглядит буквально так:
ФильтрЗаявок ( ТаблицаТМЦ, ТаблицаУслуг, ВремЗаявки, ВремЗаказыЗаявки);
В типовых Бух и ЗиК 1Сники
так с табуляцией не извращались.
"В типовых Бух и ЗиК 1Сники так с табуляцией не извращались."
В ТиС встречается такое кое-где, но не массово.
.
А я все ника кне определюсь, как "правильно" писать
Если А = 1 Тогда
или Если А=1 Тогда
Цитата: Злоп от 17 мая 2026, 18:55А я все ника кне определюсь
У меня несколько теорий на основе своих ощущений:
1. С возрастом (пресбиопия) хочется больше воздуха в коде, проще читать. Раньше сжатый усваивался лучше и давал хорошее погружение.
2. Почерк со временем менять полезно, чтобы без временных меток примерно понимать, когда писалось. Например: воздушный код - значит, это последние два года. Нижнее подчеркивание в именах переменных - начало двадцатых. Etc
3. Свой сжатый код был хорошо видно в типовых на фоне их воздушного - теперь поддержки типовых нет, можно спокойно смешать, пользуясь воздушным.