Имя: Пароль:
1C
1С v8
Списание материалов из эксплуатации с добавленного счета
,
0 Тринадцать
 
18.02.21
13:56
Всем привет, конфа бух 3.0.88.28. Добавили свой забалансовый счет МЦ.06, на нем ведем учет номенклатуры с видом Учебная литература.
Требуется поменять проводки документа Списание материалов из эксплуатации, чтобы этот вид номенклатуры списывал со счета МЦ.06.
В обработке проведения док идет в общий модуль УчетМатериаловВЭксплуатации.СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(..)
Там дальше есть функция, которая запросом проверяет достаточно ли остатка на счете для списания.
Как придумать, как подставить туда в запрос условие, что номенклатуру с видом "Уч.литература" искать на счете МЦ.06 ?
Стандартно ставит не МЦ.04 (ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации). как сделать выбор ?
Вот текст функции:

Функция ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь(ТаблицаМатериалы, Реквизиты, Отказ)
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание
    |ПОМЕСТИТЬ ТаблицаМатериалы
    |ИЗ
    |    &ТаблицаМатериалы КАК ТаблицаМатериалы
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    СчетМЦ,
    |    Номенклатура,
    |    ПартияМатериаловВЭксплуатации,
    |    ФизЛицо
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ТаблицаМатериалы.ФизЛицо КАК ФизЛицо,
    |    &Подразделение КАК Подразделение,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток
    |ИЗ
    |    ТаблицаМатериалы КАК ТаблицаМатериалы
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &Период,
    |                Счет В (&СчетаУчетаИнвентаряЗабалансовый),
    |                &ВидыСубконтоИнвентарь,
    |                Организация = &Организация
    |                    И (Подразделение = &Подразделение
    |                        ИЛИ Подразделение ЕСТЬ NULL)) КАК ХозрасчетныйОстаткиМЦ
    |        ПО ТаблицаМатериалы.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет
    |            И ТаблицаМатериалы.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1
    |            И ТаблицаМатериалы.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2
    |            И ТаблицаМатериалы.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3
    |
    |УПОРЯДОЧИТЬ ПО
    |    ИмяСписка,
    |    НомерСтроки";

Запрос.УстановитьПараметр("ТаблицаМатериалы", ТаблицаМатериалы);
    Запрос.УстановитьПараметр("Период", Новый Граница(Новый МоментВремени(Реквизиты.Период, Реквизиты.Регистратор), ВидГраницы.Исключая));
    Запрос.УстановитьПараметр("Организация",       Реквизиты.Организация);
    Запрос.УстановитьПараметр("Подразделение",      Реквизиты.Подразделение);
    Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый",
    
    БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации));
    
    ВидыСубконтоИнвентарь = Новый Массив;
    ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПартииМатериаловВЭксплуатации);
    ВидыСубконтоИнвентарь.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.РаботникиОрганизаций);
    Запрос.УстановитьПараметр("ВидыСубконтоИнвентарь", ВидыСубконтоИнвентарь);
    
    ТаблицаСписанныеМатериалы = Запрос.Выполнить().Выгрузить();
    
    ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦ",   ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
    ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦНУ", ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
    ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦПР", ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
    ТаблицаСписанныеМатериалы.Колонки.Добавить("СуммаМЦВР", ОбщегоНазначения.ОписаниеТипаЧисло(15,2));
    
    Для Каждого СтрокаТаблицы Из ТаблицаСписанныеМатериалы Цикл
        
        // Проверяем, достаточный ли остаток по количеству (на забалансовом счете МЦ)
        Если СтрокаТаблицы.КоличествоМЦ > СтрокаТаблицы.КоличествоМЦОстаток Тогда
        
            ТекстОшибки = НСтр("ru='Указанное количество превышает остаток по счету %1.
                |Остаток: %2; Не хватает: %3'");
            ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстОшибки,
                СтрокаТаблицы.СчетМЦ,
                СтрокаТаблицы.КоличествоМЦОстаток,
                СтрокаТаблицы.КоличествоМЦ - СтрокаТаблицы.КоличествоМЦОстаток);
            ТекстСообщения = ОбщегоНазначенияКлиентСервер.ТекстОшибкиЗаполнения("Колонка", "Корректность",
                НСтр("ru = 'Количество'"),
                СтрокаТаблицы.НомерСтроки,
                СтрокаТаблицы.СинонимСписка,
                ТекстОшибки);
            Поле = СтрокаТаблицы.ИмяСписка + "[" + Формат(СтрокаТаблицы.НомерСтроки - 1, "ЧН=0; ЧГ=") + "].Количество";

            ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения, Реквизиты.Регистратор, Поле, "Объект", Отказ);
        
            Продолжить;
            
        КонецЕсли;
        
        // Рассчитываем суммы списания
        ДоляСписанияМЦ = ?(СтрокаТаблицы.КоличествоМЦОстаток = 0, 0, СтрокаТаблицы.КоличествоМЦ / СтрокаТаблицы.КоличествоМЦОстаток);
        СтрокаТаблицы.СуммаМЦ   = СтрокаТаблицы.ПервоначальнаяСтоимостьКонечныйОстаток * ДоляСписанияМЦ;
        СтрокаТаблицы.СуммаМЦНУ = 0;
        СтрокаТаблицы.СуммаМЦПР = СтрокаТаблицы.ПервоначальнаяСтоимостьПРКонечныйОстаток * ДоляСписанияМЦ;
        СтрокаТаблицы.СуммаМЦВР = СтрокаТаблицы.ПервоначальнаяСтоимостьВРКонечныйОстаток * ДоляСписанияМЦ;
        
    КонецЦикла;

    Возврат ТаблицаСписанныеМатериалы;

КонецФункции
1 lubitelxml
 
18.02.21
17:36
Доработать запрос, через ВЫБОР КОГДА использовать нужный счет, который будет передан в параметр
2 Тринадцать
 
19.02.21
17:12
Спасибо, пробую так.
Но ругается - Синтаксическая ошибка "Где"
<<?>> ГДЕ  Счет В (ВЫБОР КОГДА ТаблицаМатериалы.ВидНоменклатуры = &ВидНоменклатуры
Что делаю не так?
"ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание,
    |    Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры
    |ПОМЕСТИТЬ ТаблицаМатериалы
    |ИЗ
    |    &ТаблицаМатериалы КАК ТаблицаМатериалы
    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
    |        ПО ТаблицаМатериалы.Номенклатура = Номенклатура.Наименование
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    СчетМЦ,
    |    Номенклатура,
    |    ПартияМатериаловВЭксплуатации,
    |    ФизЛицо
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ТаблицаМатериалы.ФизЛицо КАК ФизЛицо,
    |    &Подразделение КАК Подразделение,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток,
    |    ТаблицаМатериалы.ВидНоменклатуры КАК ВидНоменклатуры
    |ИЗ
    |    ТаблицаМатериалы КАК ТаблицаМатериалы
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &Период,
    |        ГДЕ        Счет В (ВЫБОР КОГДА ТаблицаМатериалы.ВидНоменклатуры = &ВидНоменклатуры
    |                                ТОГДА &СчетаУчетаИнвентаряЗабалансовыйМЦ06
    |                            ИНАЧЕ &СчетаУчетаИнвентаряЗабалансовый КОНЕЦ)
    |
    |                &ВидыСубконтоИнвентарь,
    |                Организация = &Организация
    |                    И (Подразделение = &Подразделение
    |                        ИЛИ Подразделение ЕСТЬ NULL)) КАК ХозрасчетныйОстаткиМЦ
    |        ПО ТаблицаМатериалы.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет
    |            И ТаблицаМатериалы.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1
    |            И ТаблицаМатериалы.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2
    |            И ТаблицаМатериалы.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3
    |УПОРЯДОЧИТЬ ПО
    |    ИмяСписка,
    |    НомерСтроки";
3 Тринадцать
 
20.02.21
14:10
Пробую так:
"ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ЕСТЬNULL(ТаблицаМатериалы.ФизЛицо, ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка)) КАК ФизЛицо,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание
    |ПОМЕСТИТЬ ТаблицаМатериалы
    |ИЗ
    |    &ТаблицаМатериалы КАК ТаблицаМатериалы
    |
    |ИНДЕКСИРОВАТЬ ПО
    |    СчетМЦ,
    |    Номенклатура,
    |    ПартияМатериаловВЭксплуатации,
    |    ФизЛицо
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаМатериалы.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ТаблицаМатериалы.ФизЛицо КАК ФизЛицо,
    |    ТаблицаМатериалы.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы.Содержание КАК Содержание,
    |    СправочникНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры
    |ПОМЕСТИТЬ ТаблицаМатериалы2
    |ИЗ
    |    ТаблицаМатериалы КАК ТаблицаМатериалы
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СправочникНоменклатура
    |        ПО ТаблицаМатериалы.Номенклатура = СправочникНоменклатура.Наименование
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ТаблицаМатериалы2.ИмяСписка КАК ИмяСписка,
    |    ТаблицаМатериалы2.СинонимСписка КАК СинонимСписка,
    |    ТаблицаМатериалы2.НомерСтроки КАК НомерСтроки,
    |    ТаблицаМатериалы2.СчетМЦ КАК СчетМЦ,
    |    ТаблицаМатериалы2.Номенклатура КАК Номенклатура,
    |    ТаблицаМатериалы2.ПартияМатериаловВЭксплуатации КАК ПартияМатериаловВЭксплуатации,
    |    ТаблицаМатериалы2.ФизЛицо КАК ФизЛицо,
    |    &Подразделение КАК Подразделение,
    |    ТаблицаМатериалы2.КоличествоМЦ КАК КоличествоМЦ,
    |    ТаблицаМатериалы2.Содержание КАК Содержание,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.КоличествоОстатокДт, 0) КАК КоличествоМЦОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаОстатокДт, 0) КАК ПервоначальнаяСтоимостьКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаНУОстатокДт, 0) КАК ПервоначальнаяСтоимостьНУКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаПРОстатокДт, 0) КАК ПервоначальнаяСтоимостьПРКонечныйОстаток,
    |    ЕСТЬNULL(ХозрасчетныйОстаткиМЦ.СуммаВРОстатокДт, 0) КАК ПервоначальнаяСтоимостьВРКонечныйОстаток,
    |    ТаблицаМатериалы2.ВидНоменклатуры КАК ВидНоменклатуры
    |ИЗ
    |    ТаблицаМатериалы2 КАК ТаблицаМатериалы2
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки(
    |                &Период,
    |                ,
    |                &ВидыСубконтоИнвентарь,
    |                Подразделение = &Подразделение
    |                    ИЛИ Подразделение ЕСТЬ NULL) КАК ХозрасчетныйОстаткиМЦ
    |        ПО ТаблицаМатериалы2.СчетМЦ = ХозрасчетныйОстаткиМЦ.Счет
    |            И ТаблицаМатериалы2.Номенклатура = ХозрасчетныйОстаткиМЦ.Субконто1
    |            И ТаблицаМатериалы2.ПартияМатериаловВЭксплуатации = ХозрасчетныйОстаткиМЦ.Субконто2
    |            И ТаблицаМатериалы2.ФизЛицо = ХозрасчетныйОстаткиМЦ.Субконто3
    |ГДЕ
    |    ХозрасчетныйОстаткиМЦ.Организация = &Организация
    |    И ВЫБОР
    |            КОГДА ХозрасчетныйОстаткиМЦ.Субконто1.ВидНоменклатуры = &ВидНоменклатуры
    |                ТОГДА &СчетаУчетаИнвентаряЗабалансовыйМЦ06
    |            ИНАЧЕ &СчетаУчетаИнвентаряЗабалансовый
    |        КОНЕЦ
    |
    |УПОРЯДОЧИТЬ ПО
    |    ИмяСписка,
    |    НомерСтроки";

Ошибка - по причине:
{(73, 4)}: Операция не разрешена в предложении "ГДЕ"
И <<?>>ВЫБОР

видимо нельзя передавать  &ВидНоменклатуры.
Но как по другому? если ВидНоменклатуры тоже добавлен свой , не предопределенный
4 vicof
 
20.02.21
16:20
Да тебе  этот запрос вообще не надо трогать.
А при формировании &ТаблицаМатериалы использовать нужный счет
5 Тринадцать
 
20.02.21
16:37
(4) насколько я понимаю, счет передается параметром здесь-  Счет В (&СчетаУчетаИнвентаряЗабалансовый)
6 Тринадцать
 
24.02.21
09:50
Help
7 ZDenis
 
24.02.21
10:10
(6) Поменять это -
Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый", БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации));

на это -
МассивСчетовИнвентаря = Новый Массив;
МассивСчетовИнвентаря.Добвыить(БухгалтерскийУчетПовтИсп.СчетаВИерархии(ПланыСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации));
МассивСчетовИнвентаря.Добвыить(ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.06"));
Запрос.УстановитьПараметр("СчетаУчетаИнвентаряЗабалансовый", МассивСчетовИнвентаря);
8 Тринадцать
 
24.02.21
11:52
(7) спасибо)
ругается при проведении
Некорректно заполнена колонка "Количество" в строке 2 списка "Инвентарь и хозяйственные принадлежности".
Указанное количество превышает остаток по счету МЦ.04.
Остаток: 0; Не хватает: 1

все-равно проверяет МЦ.04, а надо МЦ.06 (для конкретного вида номенклатуры)
9 ZDenis
 
24.02.21
12:06
(8) Он не проверяет счет МЦ.04, а выводит сообщение и подставляет этот счет из таблицы "ТаблицаМатериалы", которая уже попадает в эту функцию с заполненным счетом - МЦ.04.
10 Тринадцать
 
24.02.21
12:28
(9) ТаблицаМатериалы формируется здесь

Процедура СформироватьДвиженияСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты, Движения, Отказ) Экспорт

    Если Не ЗначениеЗаполнено(ТаблицаМатериалы) Тогда
        Возврат;
    КонецЕсли;
    
    Параметры = ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты);
    Реквизиты = Параметры.Реквизиты[0];

    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ИНФОРМАЦИОННОЙ БАЗЫ

    ТаблицаСписанныйИнвентарь = ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь(
        Параметры.ТаблицаМатериалы, Реквизиты, Отказ);

    // ФОРМИРОВАНИЕ ДВИЖЕНИЙ

    СформироватьПроводкиСписаниеМатериаловИзЭксплуатацииМЦ(
        ТаблицаСписанныйИнвентарь, Реквизиты, Движения, Отказ);
    
КонецПроцедуры

Функция ПодготовитьПараметрыСписаниеИнвентаряИзЭксплуатации(ТаблицаМатериалы, ТаблицаРеквизиты)
    
    Параметры = Новый Структура;
    
    // Подготовка таблицы Параметры.ТаблицаМатериалы
    
    СписокОбязательныхКолонок = ""
    + "ИмяСписка,"                     // <Строка,0> - имя списка в документе
    + "СинонимСписка,"                 // <Строка,0> - синоним списка
    + "НомерСтроки,"                   // <Число> - номер строки в списке
    + "СчетМЦ,"                        // <ПланСчетовСсылка.Хозрасчетный> - забалансовый счет учета материалов в эксплуатации (МЦ)
    + "Номенклатура,"                  // <СправочникСсылка.Номенклатура> - номенклатура материалов в эксплуатации
    + "ПартияМатериаловВЭксплуатации," // <Характеристика.ВидыСубконтоХозрасчетные> - партия материалов в эксплуатации
    + "ФизЛицо,"                       // <СправочникСсылка.ФизическиеЛица> - материально-ответственное лицо
    + "КоличествоМЦ,"                  // <Число,15,3> - количество материалов для погашения стоимости
    + "Содержание";                    // <Строка,150> - содержание проводки
    
    Параметры.Вставить("ТаблицаМатериалы",
        ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаМатериалы, СписокОбязательныхКолонок));
    
    // Подготовка таблицы Параметры.Реквизиты
    
    СписокОбязательныхКолонок = ""
    + "Регистратор,"                   // <ДокументСсылка.*> - документ-регистратор движений
    + "Период,"                        // <Дата> - период движений - дата документа
    + "Организация,"                   // <СправочникСсылка.Организации>
    + "Подразделение";                 // <Ссылка на справочник подразделений> - производственное подразделение организации
    
    Параметры.Вставить("Реквизиты",
        ОбщегоНазначенияБПВызовСервера.ПолучитьТаблицуПараметровПроведения(ТаблицаРеквизиты, СписокОбязательныхКолонок));
    
    Возврат Параметры;
    
КонецФункции

подскажи, пожалуйста, как заменить здесь счет?
11 vicof
 
24.02.21
12:33
ПодготовитьТаблицуСписанныйИзЭксплуатацииИнвентарь сначала посмотреть
12 Тринадцать
 
24.02.21
12:37
(11) так она в (0)
там и есть этот запрос
13 ZDenis
 
24.02.21
12:39
(10) ТаблицаМатериалы формируется в документе, а ты уже функции глобального модуля показываешь
14 ZDenis
 
24.02.21
12:41
+13 ТекстЗапросаСписаниеИнвентаря в менеджере документа
15 Тринадцать
 
24.02.21
12:43
(14) да, как раз до него добралась
Функция ТекстЗапросаСписаниеИнвентаря(НомераТаблиц)

    НомераТаблиц.Вставить("СписаниеИнвентаряРеквизиты", НомераТаблиц.Количество());
    НомераТаблиц.Вставить("СписаниеИнвентаряТаблица", НомераТаблиц.Количество());

    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Реквизиты.Ссылка КАК Регистратор,
    |    Реквизиты.Дата КАК Период,
    |    Реквизиты.Организация,
    |    Реквизиты.ПодразделениеОрганизации КАК Подразделение
    |ИЗ
    |    Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты
    |ГДЕ
    |    Реквизиты.Ссылка = &Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ""ИнвентарьИХозяйственныеПринадлежности"" КАК ИмяСписка,
    |    &СинонимИнвентарь КАК СинонимСписка,
    |    МИНИМУМ(ТаблицаИнвентарь.НомерСтроки) КАК НомерСтроки,
    |    ТаблицаИнвентарь.Номенклатура,
    |    ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации,
    |    ТаблицаИнвентарь.ФизЛицо,
    |    ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации) КАК СчетМЦ,
    |    СУММА(ТаблицаИнвентарь.Количество) КАК КоличествоМЦ
    |ИЗ
    |    Документ.СписаниеМатериаловИзЭксплуатации.ИнвентарьИХозяйственныеПринадлежности КАК ТаблицаИнвентарь
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты
    |        ПО ТаблицаИнвентарь.Ссылка = Реквизиты.Ссылка
    |ГДЕ
    |    Реквизиты.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаИнвентарь.Номенклатура,
    |    ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации,
    |    ТаблицаИнвентарь.ФизЛицо
    |
    |УПОРЯДОЧИТЬ ПО
    |    ИмяСписка,
    |    НомерСтроки";

    Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();

КонецФункции
16 ZDenis
 
24.02.21
12:43
(15) Вот тут и измени запрос и вставляй в СчетМЦ нужный в зависимости от вида номенклатуры
17 Тринадцать
 
24.02.21
12:44
там получается тоже фиксированное значение
ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации) КАК СчетМЦ

получается, менять надо здесь? добавить условие ?
18 vicof
 
24.02.21
12:48
(17) Ты там кем работаешь, бухгалтером?
ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ
19 Тринадцать
 
24.02.21
13:03
(18) начинающим программистом))
получилось! всем огромное спасибо!!!

Подскажите еще, пожалуйста, в расширении это возможно сделать?
20 vicof
 
24.02.21
13:04
(19) Возможно
21 Тринадцать
 
25.02.21
13:08
Ребята, подскажите еще, пожалуйста, добавляю теперь все это в расширение.
При списании выходит ошибка, что не достаточно количества на счете МЦ.06, хотя оно есть.
Такое ощущение, что пытается списать 2 раза
в чем может быть ошибка?
Вот расширение:

&Вместо("ПодготовитьПараметрыПроведения")
Функция ИНФ_ПодготовитьПараметрыПроведения(ДокументСсылка, Отказ)
        ПараметрыПроведения = Новый Структура;

    Запрос = Новый Запрос;

    Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Реквизиты.Дата КАК Период,
    |    Реквизиты.Организация КАК Организация
    |ИЗ
    |    Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты
    |ГДЕ
    |    Реквизиты.Ссылка = &Ссылка";
    Выборка = Запрос.Выполнить().Выбрать();
    Выборка.Следующий();

    Если НЕ УчетнаяПолитика.Существует(Выборка.Организация, Выборка.Период, Истина, ДокументСсылка) Тогда
        Отказ = Истина;
        Возврат ПараметрыПроведения;
    КонецЕсли;

    Запрос.УстановитьПараметр("СинонимСпецодежда",   НСтр("ru = 'Спецодежда'"));
    Запрос.УстановитьПараметр("СинонимСпецоснастка", НСтр("ru = 'Спецоснастка'"));
    Запрос.УстановитьПараметр("СинонимИнвентарь",    НСтр("ru = 'Инвентарь и хозяйственные принадлежности'"));
    //+++
    Запрос.УстановитьПараметр("ВидНоменклатуры" , Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Учебная литература"));
    Запрос.УстановитьПараметр("СчетМЦ06", ПланыСчетов.Хозрасчетный.НайтиПоКоду("МЦ.06"));
    //---

    НомераТаблиц = Новый Структура;

    Запрос.Текст = ТекстЗапросаСписаниеСпецодеждыСпецоснастки(НомераТаблиц)
        + ТекстЗапросаСписаниеИнвентаря(НомераТаблиц);

    Результат = Запрос.ВыполнитьПакет();

    Для Каждого НомерТаблицы Из НомераТаблиц Цикл
        ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить());
    КонецЦикла;

    Возврат ПараметрыПроведения;

КонецФункции

&Вместо("ТекстЗапросаСписаниеИнвентаря")
Функция ИНФТекстЗапросаСписаниеИнвентаря(НомераТаблиц)
    НомераТаблиц.Вставить("СписаниеИнвентаряРеквизиты", НомераТаблиц.Количество());
    НомераТаблиц.Вставить("СписаниеИнвентаряТаблица", НомераТаблиц.Количество());

    ТекстЗапроса =
    "ВЫБРАТЬ
    |    Реквизиты.Ссылка КАК Регистратор,
    |    Реквизиты.Дата КАК Период,
    |    Реквизиты.Организация,
    |    Реквизиты.ПодразделениеОрганизации КАК Подразделение
    |ИЗ
    |    Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты
    |ГДЕ
    |    Реквизиты.Ссылка = &Ссылка
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ""ИнвентарьИХозяйственныеПринадлежности"" КАК ИмяСписка,
    |    &СинонимИнвентарь КАК СинонимСписка,
    |    МИНИМУМ(ТаблицаИнвентарь.НомерСтроки) КАК НомерСтроки,
    |    ТаблицаИнвентарь.Номенклатура,
    |    ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации,
    |    ТаблицаИнвентарь.ФизЛицо,
    |    ВЫБОР
    |        КОГДА ТаблицаИнвентарь.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
    |            ТОГДА &СчетМЦ06
    |        ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации)
    |    КОНЕЦ КАК СчетМЦ,
    |    СУММА(ТаблицаИнвентарь.Количество) КАК КоличествоМЦ
    |ИЗ
    |    Документ.СписаниеМатериаловИзЭксплуатации.ИнвентарьИХозяйственныеПринадлежности КАК ТаблицаИнвентарь
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.СписаниеМатериаловИзЭксплуатации КАК Реквизиты
    |        ПО ТаблицаИнвентарь.Ссылка = Реквизиты.Ссылка
    |ГДЕ
    |    Реквизиты.Ссылка = &Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    |    ТаблицаИнвентарь.Номенклатура,
    |    ТаблицаИнвентарь.ПартияМатериаловВЭксплуатации,
    |    ТаблицаИнвентарь.ФизЛицо
    |
    |УПОРЯДОЧИТЬ ПО
    |    ИмяСписка,
    |    НомерСтроки";

    Возврат ТекстЗапроса + ОбщегоНазначенияБПВызовСервера.ТекстРазделителяЗапросовПакета();

КонецФункции
22 Тринадцать
 
26.02.21
14:43
Не могу понять..  при проведении документа ОбработкаПроведения использует функцию
ПараметрыПроведения = Документы.СписаниеМатериаловИзЭксплуатации.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
ее я замещаю в расширении, использую &Вместо. код в посте выше.
что делаю не так?
если добавить в конфигурацию - работает, а в расширении нет. в чем ошибка?
23 vicof
 
26.02.21
14:51
Отладчик забрали?
24 Тринадцать
 
26.02.21
15:00
(23)Отладчик работает, проходит в расширение, не заходя в типовые функции.
Видимо, что-то делаю не так, но вот не могу понять что)
25 ZDenis
 
26.02.21
15:02
(24) Заходит в функции не расширения при этом? Расширение6 подключено? Какие галочки стоят?(Должна - активно, безопасный и защита - сняты)
26 vicof
 
26.02.21
15:03
Он и не должен заходить в типовые функции, которые ты заменила в расширении
27 Тринадцать
 
26.02.21
15:14
(25) Расширение подключено, галочки стоят как ты пишешь. При этом в другом документе работает корректно.
(26) Ставлю точку Останова в начале процедуры ОбработкаПроведения, в типовые функции он не заходит. только в расширение
странно как-то, если тоже самое добавить в конфигурацию, то все работает
28 palsergeich
 
26.02.21
16:14
(27) там дальше по коду - нигде в исключение не выбивает?
Просто если есть ошибка в рантайме - оно отключается
29 Тринадцать
 
26.02.21
16:20
(28) расскажи, пожалуйста, поподробнее, как это проверить?