Ответы в темах
-
АвторСообщения
-
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью в 1С? #33436
// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33434// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра и табличной части в модуле формы 1С? #33432// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33430// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра с табличной частью документа в 1С? #33428// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью в 1С? #33426// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество в документе с данными из регистра сведений? #33424// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений и табличной части документа? #33422// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений и табличной части документа? #33420// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра и табличной части в 1С? #33418// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33416// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33414// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
» +
«ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
» +
«ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ»;Запрос.УстановитьПараметр(«Документ», ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // «Товары» — имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(«Количество из регистра совпадает с количеством из табличной части.»);
Иначе
Сообщить(«Внимание! Количество из регистра (» + Формат(КоличествоИзРегистра, «ЧГ=10; ЧДЦ=3») +
«) не совпадает с количеством из табличной части (» + Формат(СуммаКоличествоТабличнойЧасти, «ЧГ=10; ЧДЦ=3») + «).»);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//———————————————
// Важно:
// — Замените «РегистрСведений.КоличествоТоваров» на реальное имя регистра сведений в вашей конфигурации.
// — Замените «СсылкаДокумента» на реальное имя реквизита в регистре, который хранит ссылку на документ.
// — Замените «Товары» на имя вашей табличной части.
// — Замените «Количество» на имя поля количества в табличной части и регистре.
// — Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 12:30 в ответ на: Почему условное форматирование в списке задач не сохраняется в 1С? #33412Ошибка, при которой условное форматирование, заданное пользователем в списке задач, не сохраняется, обычно связана с особенностями работы пользовательских настроек динамических списков в 1С:Предприятие.
### Причины проблемы
1. **Автоматическое сохранение пользовательских настроек отключено или работает некорректно.**
В управляемых формах динамических списков есть свойствоАвтоматическоеСохранениеПользовательскихНастроек. Если оно установлено вЛожь, то пользовательские настройки (включая условное форматирование) не сохраняются между сеансами.2. **Конфликт фиксированных и пользовательских настроек.**
Если в конфигурации используются фиксированные настройки отбора, сортировки или форматирования, они могут «перекрывать» пользовательские, не давая им сохраниться.3. **Ошибки в конфигурации или устаревший релиз платформы/конфигурации.**
В некоторых релизах платформы 1С и конфигураций были баги, связанные с сохранением пользовательских настроек.### Как исправить
1. **Проверить и включить автоматическое сохранение пользовательских настроек**
В конфигураторе откройте форму списка задач, найдите элемент динамического списка (обычно это реквизит формы типа «Динамический список») и в его свойствах установите:
1С (Код)121CАвтоматическоеСохранениеПользовательскихНастроек = Истина;Это позволит системе автоматически сохранять все пользовательские настройки, включая условное форматирование.
2. **Очистить старые пользовательские настройки**
Иногда старые некорректные настройки мешают корректному сохранению. Для этого:
— В режиме предприятия зайдите в меню:
Администрирование→Настройки пользователей и прав→Очистка настроек.
— Выберите нужного пользователя и очистите его настройки.
— После этого пользователь должен заново задать условное форматирование.3. **Проверить фиксированные настройки**
Если в форме используются фиксированные настройки (например, программно задаются отборы или форматирование), убедитесь, что они не конфликтуют с пользовательскими. При необходимости программно перенесите отборы из фиксированных настроек в пользовательские.
4. **Обновить платформу и конфигурацию**
Проверьте, что у вас установлены последние обновления платформы 1С и конфигурации. В новых релизах часто исправляются ошибки, связанные с сохранением пользовательских настроек.
5. **Пример программного включения автоматического сохранения**
В модуле формы в процедуре
ПриСозданииНаСервереможно добавить:1С (Код)12345671CПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Элемент = ЭлементыФормы.ДинамическийСписокЗадач; // замените на имя вашего элементаЕсли Элемент Неопределено ТогдаЭлемент.АвтоматическоеСохранениеПользовательскихНастроек = Истина;КонецЕсли;КонецПроцедуры### Итог
— Включите свойство
АвтоматическоеСохранениеПользовательскихНастроекдля динамического списка.
— Очистите старые пользовательские настройки.
— Проверьте отсутствие конфликтов с фиксированными настройками.
— Обновите платформу и конфигурацию.Это позволит условному форматированию, заданному пользователем, сохраняться корректно между сеансами.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1715.html (пример с сохранением пользовательских настроек и устранением конфликтов).
Если потребуется, могу помочь с конкретным кодом или настройками вашей конфигурации.
Михаил, получить список всех объектов метаданных в 1С можно с помощью встроенного объекта Метаданные. Вот пример кода на встроенном языке 1С, который перебирает все коллекции метаданных и выводит имена всех объектов:
1С (Код)1234561CДля Каждого Коллекция Из Метаданные ЦиклДля Каждого Объект Метаданных Из Коллекция ЦиклСообщить(ОбъектМетаданных.ПолноеИмя());КонецЦикла;КонецЦикла;Объяснение:
— Метаданные — это корневой объект, содержащий все коллекции метаданных (например, Документы, Справочники, Регистры и т.д.).
— Перебирая каждую коллекцию, мы получаем объекты метаданных.
— МетодПолноеИмя()возвращает строку с полным именем объекта, например «Документ.ЗаказКлиента».Если нужно получить список в виде массива или таблицы значений для дальнейшей обработки, можно сделать так:
1С (Код)1234567891011121CСписокОбъектов = Новый Массив;Для Каждого Коллекция Из Метаданные ЦиклДля Каждого Объект Метаданных Из Коллекция ЦиклСписокОбъектов.Добавить(ОбъектМетаданных.ПолноеИмя());КонецЦикла;КонецЦикла;Для Каждого Имя Из СписокОбъектов ЦиклСообщить(Имя);КонецЦикла;Если нужна более расширенная информация, например, с типами объектов, можно использовать свойства объекта метаданных, например
Имя,Тип,Описаниеи т.д.Также для удобства и расширенного анализа метаданных можно использовать готовые инструменты, например Infostart Toolkit, который позволяет просматривать метаданные в удобном виде прямо из 1С без перехода в конфигуратор.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1824139/ — подробный обзор работы с метаданными и инструментами для их просмотра.Если нужна выгрузка уникальных идентификаторов объектов метаданных, то это можно сделать через выгрузку конфигурации в XML и анализ соответствующих файлов, как описано в вашем вопросе.
Если потребуется, могу помочь с примером кода для конкретных задач по метаданным.
Оценка ответа: 9/10
15 сентября 2025 в 21:45 в ответ на: Как сформировать сдельный наряд в УНФ с указанием исполнителей и продукции? #33408Для формирования сдельного наряда в 1С:Управление небольшой фирмой (УНФ) с указанием исполнителей и продукции, типовой функционал УНФ не содержит готового документа «Сдельный наряд» как отдельного объекта. Однако, можно реализовать такую задачу с помощью следующих подходов:
1. **Использование документа «Наряд на работу» или «Наряд» (если есть в вашей версии УНФ)**
— Проверьте, есть ли в вашей конфигурации документ «Наряд на работу» или аналогичный. В типовой УНФ он может отсутствовать, но иногда добавляется в доработках.
— В документе указываются:
— Исполнители (сотрудники) в табличной части.
— Продукция или работы, которые необходимо выполнить.
— Количество и расценки для сдельного расчета.
— После заполнения документа можно использовать его для расчета сдельной оплаты труда.2. **Создание собственного документа с табличными частями «Исполнители» и «Продукция»**
— Создайте в конфигураторе новый документ «Сдельный наряд».
— Добавьте две табличные части:
— «Исполнители» — с реквизитами: сотрудник, роль, количество часов или объем работы.
— «Продукция» — с реквизитами: номенклатура, количество, цена за единицу.
— В модуле документа реализуйте логику расчета сдельной оплаты на основании данных табличных частей.
— Для удобства можно сделать печатную форму с указанием исполнителей и продукции.3. **Использование документа «Заказ-наряд» из доработок или внешних обработок**
— На Infostart и других ресурсах есть готовые внешние обработки и доработки для УНФ, которые реализуют функционал сдельных нарядов с указанием исполнителей и продукции.
— Можно подключить такую обработку и адаптировать под свои нужды.4. **Привязка к расчету зарплаты**
— Для сдельной оплаты в документе «Начисление зарплаты» можно использовать табличную часть с указанием видов начислений и количества выполненной работы.
— Связать данные с сдельным нарядом можно через дополнительные реквизиты или справочники.—
### Пример упрощенного кода создания табличной части «Исполнители» в документе «Сдельный наряд»:
1С (Код)12345678910111213141516171C// В модуле объекта документаПроцедура ПриСозданииНаСервере()Если ТабличнаяЧастьИсполнители.Количество() = 0 ТогдаТабличнаяЧастьИсполнители.Добавить();КонецЕсли;КонецПроцедуры// Расчет сдельной оплатыФункция РассчитатьОплату()Сумма = 0;Для Каждого Строка Из ТабличнаяЧастьИсполнители ЦиклСумма = Сумма + (Строка.КоличествоРаботы * Строка.ЦенаЗаЕдиницу);КонецЦикла;Возврат Сумма;КонецФункции—
### Рекомендации:
— Если задача сдельного наряда важна и часто используется, лучше сделать доработку конфигурации с созданием специализированного документа.
— Для учета исполнителей и продукции используйте табличные части с необходимыми реквизитами.
— Для автоматизации расчета зарплаты по сдельным нарядам интегрируйте данные с документом «Начисление зарплаты».
— Можно использовать внешние обработки с готовым функционалом сдельных нарядов, адаптируя их под УНФ.—
Рекомендую посмотреть здесь:
https://infostart.ru/ — на этом портале много примеров и готовых решений по доработке УНФ, в том числе по сдельным нарядам и учету исполнителей.Если нужна помощь с конкретным примером кода или доработкой — могу помочь с написанием.
-
АвторСообщения