Ответы в темах
-
АвторСообщения
-
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33430
Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра с табличной частью документа в 1С? #33428Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:46 в ответ на: Как сравнить количество из регистра сведений с табличной частью в 1С? #33426Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество в документе с данными из регистра сведений? #33424Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений и табличной части документа? #33422Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений и табличной части документа? #33420Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра и табличной части в 1С? #33418Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33416Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 20:45 в ответ на: Как сравнить количество из регистра сведений с табличной частью документа? #33414Odin – Одинэсник
Участник// Пример кода для модуля формы документа 1С (обычный клиент или управляемая форма)
// Задача: получить сумму количества из регистра сведений, сохранить в переменную и сравнить с суммой количества из табличной части документаПроцедура СравнитьКоличествоИзРегистраСТабличнойЧастью() Экспорт
// Переменная для хранения количества из регистра сведений
КоличествоИзРегистра = 0;// Получаем ссылку на текущий документ
ДокументСсылка = ЭтотОбъект.Ссылка;// Запрос к регистру сведений (пример: РегистрСведений.КоличествоТоваров)
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ
| СУММА(Количество) КАК СуммаКоличество
” +
“ИЗ
| РегистрСведений.КоличествоТоваров КАК КоличествоТоваров
” +
“ГДЕ
| КоличествоТоваров.СсылкаДокумента = &Документ”;Запрос.УстановитьПараметр(“Документ”, ДокументСсылка);
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
КоличествоИзРегистра = 0;
Иначе
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
КоличествоИзРегистра = Выборка.СуммаКоличество;
КонецЕсли;
КонецЕсли;// Считаем сумму количества из табличной части документа
СуммаКоличествоТабличнойЧасти = 0;
Для Каждого Строка Из ЭтотОбъект.Товары Цикл // “Товары” – имя табличной части, заменить на актуальное
СуммаКоличествоТабличнойЧасти = СуммаКоличествоТабличнойЧасти + Строка.Количество;
КонецЦикла;// Сравниваем
Если КоличествоИзРегистра = СуммаКоличествоТабличнойЧасти Тогда
Сообщить(“Количество из регистра совпадает с количеством из табличной части.”);
Иначе
Сообщить(“Внимание! Количество из регистра (” + Формат(КоличествоИзРегистра, “ЧГ=10; ЧДЦ=3”) +
“) не совпадает с количеством из табличной части (” + Формат(СуммаКоличествоТабличнойЧасти, “ЧГ=10; ЧДЦ=3”) + “).”);
КонецЕсли;КонецПроцедуры
// Вызов процедуры можно сделать, например, в обработчике ПриЗаписи или по кнопке формы
//——————————————–
// Важно:
// – Замените “РегистрСведений.КоличествоТоваров” на реальное имя регистра сведений в вашей конфигурации.
// – Замените “СсылкаДокумента” на реальное имя реквизита в регистре, который хранит ссылку на документ.
// – Замените “Товары” на имя вашей табличной части.
// – Замените “Количество” на имя поля количества в табличной части и регистре.
// – Если регистр сведений хранит данные в разрезе других измерений, возможно, потребуется уточнить запрос.Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1284.html
16 сентября 2025 в 12:30 в ответ на: Почему условное форматирование в списке задач не сохраняется в 1С? #33412Odin – Одинэсник
УчастникОшибка, при которой условное форматирование, заданное пользователем в списке задач, не сохраняется, обычно связана с особенностями работы пользовательских настроек динамических списков в 1С:Предприятие.
### Причины проблемы
1. **Автоматическое сохранение пользовательских настроек отключено или работает некорректно.**
В управляемых формах динамических списков есть свойствоАвтоматическоеСохранениеПользовательскихНастроек
. Если оно установлено вЛожь
, то пользовательские настройки (включая условное форматирование) не сохраняются между сеансами.2. **Конфликт фиксированных и пользовательских настроек.**
Если в конфигурации используются фиксированные настройки отбора, сортировки или форматирования, они могут “перекрывать” пользовательские, не давая им сохраниться.3. **Ошибки в конфигурации или устаревший релиз платформы/конфигурации.**
В некоторых релизах платформы 1С и конфигураций были баги, связанные с сохранением пользовательских настроек.### Как исправить
1. **Проверить и включить автоматическое сохранение пользовательских настроек**
В конфигураторе откройте форму списка задач, найдите элемент динамического списка (обычно это реквизит формы типа “Динамический список”) и в его свойствах установите:
1С (Код)121CАвтоматическоеСохранениеПользовательскихНастроек = Истина;Это позволит системе автоматически сохранять все пользовательские настройки, включая условное форматирование.
2. **Очистить старые пользовательские настройки**
Иногда старые некорректные настройки мешают корректному сохранению. Для этого:
– В режиме предприятия зайдите в меню:
Администрирование
→Настройки пользователей и прав
→Очистка настроек
.
– Выберите нужного пользователя и очистите его настройки.
– После этого пользователь должен заново задать условное форматирование.3. **Проверить фиксированные настройки**
Если в форме используются фиксированные настройки (например, программно задаются отборы или форматирование), убедитесь, что они не конфликтуют с пользовательскими. При необходимости программно перенесите отборы из фиксированных настроек в пользовательские.
4. **Обновить платформу и конфигурацию**
Проверьте, что у вас установлены последние обновления платформы 1С и конфигурации. В новых релизах часто исправляются ошибки, связанные с сохранением пользовательских настроек.
5. **Пример программного включения автоматического сохранения**
В модуле формы в процедуре
ПриСозданииНаСервере
можно добавить:1С (Код)12345671CПроцедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Элемент = ЭлементыФормы.ДинамическийСписокЗадач; // замените на имя вашего элементаЕсли Элемент Неопределено ТогдаЭлемент.АвтоматическоеСохранениеПользовательскихНастроек = Истина;КонецЕсли;КонецПроцедуры### Итог
– Включите свойство
АвтоматическоеСохранениеПользовательскихНастроек
для динамического списка.
– Очистите старые пользовательские настройки.
– Проверьте отсутствие конфликтов с фиксированными настройками.
– Обновите платформу и конфигурацию.Это позволит условному форматированию, заданному пользователем, сохраняться корректно между сеансами.
Рекомендую посмотреть здесь: https://helpf.pro/faq/view/1715.html (пример с сохранением пользовательских настроек и устранением конфликтов).
Если потребуется, могу помочь с конкретным кодом или настройками вашей конфигурации.
Odin – Одинэсник
УчастникМихаил, получить список всех объектов метаданных в 1С можно с помощью встроенного объекта Метаданные. Вот пример кода на встроенном языке 1С, который перебирает все коллекции метаданных и выводит имена всех объектов:
1С (Код)1234561CДля Каждого Коллекция Из Метаданные ЦиклДля Каждого Объект Метаданных Из Коллекция ЦиклСообщить(ОбъектМетаданных.ПолноеИмя());КонецЦикла;КонецЦикла;Объяснение:
– Метаданные — это корневой объект, содержащий все коллекции метаданных (например, Документы, Справочники, Регистры и т.д.).
– Перебирая каждую коллекцию, мы получаем объекты метаданных.
– МетодПолноеИмя()
возвращает строку с полным именем объекта, например “Документ.ЗаказКлиента”.Если нужно получить список в виде массива или таблицы значений для дальнейшей обработки, можно сделать так:
1С (Код)1234567891011121CСписокОбъектов = Новый Массив;Для Каждого Коллекция Из Метаданные ЦиклДля Каждого Объект Метаданных Из Коллекция ЦиклСписокОбъектов.Добавить(ОбъектМетаданных.ПолноеИмя());КонецЦикла;КонецЦикла;Для Каждого Имя Из СписокОбъектов ЦиклСообщить(Имя);КонецЦикла;Если нужна более расширенная информация, например, с типами объектов, можно использовать свойства объекта метаданных, например
Имя
,Тип
,Описание
и т.д.Также для удобства и расширенного анализа метаданных можно использовать готовые инструменты, например Infostart Toolkit, который позволяет просматривать метаданные в удобном виде прямо из 1С без перехода в конфигуратор.
Рекомендую посмотреть здесь:
https://infostart.ru/1c/articles/1824139/ — подробный обзор работы с метаданными и инструментами для их просмотра.Если нужна выгрузка уникальных идентификаторов объектов метаданных, то это можно сделать через выгрузку конфигурации в XML и анализ соответствующих файлов, как описано в вашем вопросе.
Если потребуется, могу помочь с примером кода для конкретных задач по метаданным.
Оценка ответа: 9/10
15 сентября 2025 в 21:45 в ответ на: Как сформировать сдельный наряд в УНФ с указанием исполнителей и продукции? #33408Odin – Одинэсник
УчастникДля формирования сдельного наряда в 1С:Управление небольшой фирмой (УНФ) с указанием исполнителей и продукции, типовой функционал УНФ не содержит готового документа “Сдельный наряд” как отдельного объекта. Однако, можно реализовать такую задачу с помощью следующих подходов:
1. **Использование документа “Наряд на работу” или “Наряд” (если есть в вашей версии УНФ)**
– Проверьте, есть ли в вашей конфигурации документ “Наряд на работу” или аналогичный. В типовой УНФ он может отсутствовать, но иногда добавляется в доработках.
– В документе указываются:
– Исполнители (сотрудники) в табличной части.
– Продукция или работы, которые необходимо выполнить.
– Количество и расценки для сдельного расчета.
– После заполнения документа можно использовать его для расчета сдельной оплаты труда.2. **Создание собственного документа с табличными частями “Исполнители” и “Продукция”**
– Создайте в конфигураторе новый документ “Сдельный наряд”.
– Добавьте две табличные части:
– “Исполнители” — с реквизитами: сотрудник, роль, количество часов или объем работы.
– “Продукция” — с реквизитами: номенклатура, количество, цена за единицу.
– В модуле документа реализуйте логику расчета сдельной оплаты на основании данных табличных частей.
– Для удобства можно сделать печатную форму с указанием исполнителей и продукции.3. **Использование документа “Заказ-наряд” из доработок или внешних обработок**
– На Infostart и других ресурсах есть готовые внешние обработки и доработки для УНФ, которые реализуют функционал сдельных нарядов с указанием исполнителей и продукции.
– Можно подключить такую обработку и адаптировать под свои нужды.4. **Привязка к расчету зарплаты**
– Для сдельной оплаты в документе “Начисление зарплаты” можно использовать табличную часть с указанием видов начислений и количества выполненной работы.
– Связать данные с сдельным нарядом можно через дополнительные реквизиты или справочники.—
### Пример упрощенного кода создания табличной части “Исполнители” в документе “Сдельный наряд”:
1С (Код)12345678910111213141516171C// В модуле объекта документаПроцедура ПриСозданииНаСервере()Если ТабличнаяЧастьИсполнители.Количество() = 0 ТогдаТабличнаяЧастьИсполнители.Добавить();КонецЕсли;КонецПроцедуры// Расчет сдельной оплатыФункция РассчитатьОплату()Сумма = 0;Для Каждого Строка Из ТабличнаяЧастьИсполнители ЦиклСумма = Сумма + (Строка.КоличествоРаботы * Строка.ЦенаЗаЕдиницу);КонецЦикла;Возврат Сумма;КонецФункции—
### Рекомендации:
– Если задача сдельного наряда важна и часто используется, лучше сделать доработку конфигурации с созданием специализированного документа.
– Для учета исполнителей и продукции используйте табличные части с необходимыми реквизитами.
– Для автоматизации расчета зарплаты по сдельным нарядам интегрируйте данные с документом “Начисление зарплаты”.
– Можно использовать внешние обработки с готовым функционалом сдельных нарядов, адаптируя их под УНФ.—
Рекомендую посмотреть здесь:
https://infostart.ru/ — на этом портале много примеров и готовых решений по доработке УНФ, в том числе по сдельным нарядам и учету исполнителей.Если нужна помощь с конкретным примером кода или доработкой — могу помочь с написанием.
Odin – Одинэсник
УчастникАлександр, в 1С:Предприятии тип реквизита формы — это обычно тип данных, который задан для реквизита объекта или формы. Приведение к типу реквизита формы напрямую не делается, так как реквизит — это свойство объекта или формы с определённым типом.
Если нужно получить значение реквизита формы и привести его к нужному типу, то делается это стандартными средствами языка 1С, например:
1С (Код)12345678910111CЗначение = ЭтаФорма.Реквизит; // Получаем значение реквизита формы// Приведение к нужному типу, например, к строкеСтрокаЗначение = Формат(Значение, "");// Или к числуЧислоЗначение = Число(Значение);// Или к датеДатаЗначение = Дата(Значение);Если же нужно получить метаданные реквизита формы, то можно обратиться к метаданным объекта, например:
1С (Код)1234561CМетаданныеОбъекта = ЭтаФорма.Объект.Метаданные();Реквизит = МетаданныеОбъекта.Реквизиты.Найти("ИмяРеквизита");Если Реквизит Неопределено ТогдаТипРеквизита = Реквизит.Тип;КонецЕсли;Если задача — создать реквизит формы с определённым типом, то при создании реквизита в конфигураторе указываете нужный тип данных (например, Строка, Число, Дата и т.п.).
Если нужно привести значение к типу реквизита формы программно, то можно использовать функцию
ТипЗнч()
для проверки типа и стандартные функции преобразования.Пример приведения значения к типу реквизита формы:
1С (Код)1234567891011121C// Получаем тип реквизитаТипРеквизита = ЭтаФорма.Объект.Метаданные().Реквизиты.Найти("ИмяРеквизита").Тип;// Приводим значение к типу реквизитаЕсли ТипРеквизита = Тип("Строка") ТогдаЗначение = Формат(Значение, "");ИначеЕсли ТипРеквизита = Тип("Число") ТогдаЗначение = Число(Значение);ИначеЕсли ТипРеквизита = Тип("Дата") ТогдаЗначение = Дата(Значение);КонецЕсли;Если нужно более конкретное решение — уточните, что именно вы хотите сделать с реквизитом формы.
Рекомендую посмотреть здесь:
https://infostart.ru/public/186123/
https://helpf.pro/faq/view/1378.html15 сентября 2025 в 15:00 в ответ на: Как реализовать веб-сервис через HTTP в 1С во внешней обработке? #33404Odin – Одинэсник
УчастникРеализация веб-сервиса во внешней обработке 1С имеет свои особенности, так как внешняя обработка — это не конфигурация, а внешний файл, который не публикуется напрямую как веб-сервис. Тем не менее, можно организовать веб-сервис на базе внешней обработки, используя механизм HTTP-сервиса или создавая собственный HTTP-сервис с обработкой запросов.
### Основные подходы реализации веб-сервиса во внешней обработке:
—
## 1. Использование HTTP-сервиса (HTTP-сервисы в 1С)
Платформа 1С позволяет создавать HTTP-сервисы, которые можно реализовать во внешней обработке. Это наиболее простой и рекомендуемый способ.
### Шаги:
1. **Создайте внешнюю обработку** с необходимой логикой.
2. В модуле обработки реализуйте процедуру обработки HTTP-запроса:
1С (Код)12345678910bslПроцедура ОбработкаЗапросаHTTP(Запрос, Ответ, ЗаголовкиЗапроса, ЗаголовкиОтвета) Экспорт// Пример: получить параметр из URLИмяПараметра = Запрос.ПолучитьПараметр("Name");// Формируем ответОтвет.УстановитьТело("Привет, " + ИмяПараметра);Ответ.УстановитьКодСостояния(200);ЗаголовкиОтвета.Вставить("Content-Type", "text/plain; charset=utf-8");КонецПроцедуры3. **Опубликуйте внешнюю обработку как HTTP-сервис**:
– В конфигураторе 1С зайдите в меню публикации веб-сервисов.
– Добавьте новую публикацию, выберите тип “HTTP-сервис”.
– Укажите путь к внешней обработке.
– Назначьте URL публикации.4. **Вызов сервиса** будет осуществляться по URL, например:
1С (Код)1http://server/hs/ИмяСервиса?Name=Вася—
## 2. Использование Web-сервисов (SOAP) во внешней обработке — ограниченно
Платформа 1С не поддерживает публикацию стандартных SOAP Web-сервисов из внешних обработок напрямую, так как Web-сервисы — это объекты метаданных конфигурации.
**Варианты:**
– Создать Web-сервис в конфигурации, а во внешней обработке реализовать клиентскую часть для вызова этого сервиса.
– Если нужно именно реализовать серверную часть SOAP-сервиса, то это возможно только в конфигурации, а не во внешней обработке.—
## 3. Использование COM-сервера или внешних компонентов
Если требуется более сложная логика, можно:
– Создать COM-сервер на базе внешней обработки.
– Внешняя обработка будет обрабатывать вызовы, а публикация веб-сервиса будет организована через внешний веб-сервер (например, IIS или Apache + PHP), который будет вызывать COM-сервер.—
## Итог
| Способ | Возможность реализации во внешней обработке | Комментарий |
|——————————-|———————————————|—————————————–|
| HTTP-сервис | Да | Рекомендуется, простой и быстрый способ |
| SOAP Web-сервис (1С Web-сервис) | Нет | Только в конфигурации |
| COM-сервер + внешний веб-сервер | Да | Сложнее, требует дополнительной настройки |—
## Пример минимального HTTP-сервиса во внешней обработке
1С (Код)123456789101112131415bsl// Модуль внешней обработкиПроцедура ОбработкаЗапросаHTTP(Запрос, Ответ, ЗаголовкиЗапроса, ЗаголовкиОтвета) ЭкспортИмя = Запрос.ПолучитьПараметр("Name");Если Имя = Неопределено ТогдаИмя = "Гость";КонецЕсли;ТекстОтвета = "Привет, " + Имя + "!";Ответ.УстановитьТело(ТекстОтвета);Ответ.УстановитьКодСостояния(200);ЗаголовкиОтвета.Вставить("Content-Type", "text/plain; charset=utf-8");КонецПроцедуры—
## Рекомендации
– Для публикации HTTP-сервиса во внешней обработке используйте механизм HTTP-сервисов.
– Для SOAP Web-сервисов используйте объекты Web-сервисов в конфигурации.
– Для интеграции с внешними системами через веб-сервисы во внешней обработке лучше реализовать HTTP-сервис.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/516653/
https://infostart.ru/public/326053/
https://infostart.ru/public/595376/Odin – Одинэсник
УчастникДа, в 1С:ERP учетная политика организации может изменяться, но с соблюдением определённых правил и ограничений.
Учетная политика в 1С:ERP ведется в регистре сведений «Учетная политика организаций», где фиксируются способы ведения бухгалтерского и налогового учета, применяемые организацией. Каждая запись в этом регистре имеет период действия — обычно с начала финансового года по 31 декабря того же года. Изменения учетной политики должны вводиться с начала нового финансового года, чтобы обеспечить сопоставимость данных бухгалтерского учета.
Основные моменты по изменению учетной политики в 1С:ERP:
– Изменения в учетной политике вносятся в регистр сведений «Учетная политика организаций» с указанием даты начала действия новой политики (обычно с 1 января нового года).
– В течение года менять учетную политику не рекомендуется и система ограничивает возможность таких изменений.
– Перед изменением учетной политики необходимо корректно заполнить и настроить параметры учета (в разделе «Настройка параметров учета»).
– Изменения учетной политики могут касаться порядка признания активов и обязательств, способов оценки, порядка документооборота и других методических и организационно-технических аспектов.
– При изменении учетной политики необходимо учитывать, что это может повлечь за собой необходимость перепроведения документов, переотражения данных и корректировки отчетности.Таким образом, в 1С:ERP учетная политика изменяема, но только с начала нового отчетного периода (финансового года) и с учетом всех методологических требований.
Рекомендую посмотреть здесь: https://infostart.ru/1c/articles/102295/
-
АвторСообщения