Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Заполнение колонки списка документов , Значение нужно взять из формы документа          
Veizdem Подменю пользователя
сообщение 23.07.14, 8:53
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Поставили задачу, необходимо добавить колонку "Сумма Потрачено" в список документа "Авансовый Отчет". Сумма эта вычисляется в форме документа на основе заполнения 2 вкладок на форме. Как можно вытащить это значение?

Приложение обычное, платформа 8.2.


Signature
В моих жилах текут нолики и единички...

Petre Подменю пользователя
сообщение 23.07.14, 9:05
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

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

Сообщение отредактировал Petre - 23.07.14, 9:05


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Veizdem Подменю пользователя
сообщение 23.07.14, 9:17
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(Petre @ 23.07.14, 10:05) *
Добавить в документ реквизит и вычислять его значение перед записью. В список вывести данный реквизит.


Сейчас попробую

Но на сколько я понимаю это будет только для новых элементов, а мне нужно вывести несколько тысяч уже имеющихся и записанных без такого реквизита.


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 9:22
Сообщение #4

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

Можно обработкой записать, если сильно надо. ДокументОбъект.Записать(РежимЗаписиДокумента.Запись) - это не перепроведение, на партии запасов не повлияет.


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Petre Подменю пользователя
сообщение 23.07.14, 9:26
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Обработать групповой обработкой.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Veizdem Подменю пользователя
сообщение 23.07.14, 10:02
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Все понял, кроме одного - как через групповую обработку процесс записи дать, не нашел я там такой "педали".


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 10:08
Сообщение #7

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

Вообще надо инициировать запись документа и процедуру по расчету нового реквизита. Значит, надо реквизит какой-то поменять. Теоретически - пробел в Комментарий записать. А если там уже был комментарий заполнен?.. Но я бы лучше написала свою обработку в три строки. Быстро, сурово, ничего лишнего.


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Veizdem Подменю пользователя
сообщение 23.07.14, 10:21
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(Rayne @ 23.07.14, 11:08) *
Вообще надо инициировать запись документа и процедуру по расчету нового реквизита. Значит, надо реквизит какой-то поменять. Теоретически - пробел в Комментарий записать. А если там уже был комментарий заполнен?.. Но я бы лучше написала свою обработку в три строки. Быстро, сурово, ничего лишнего.


Я 1С меньше месяца назад впервые увидел. Так что многого в глаза еще не видел, хотя и читаю литературку все время. Вот обработки еще не ковырял вообще (

Я так понимаю надо написать нечто типа такого:
Если Комментарий = неопределено Тогда
    Комментарий = " ";
Иначе
    Комментарий = Комментарий + " "
КонецЕсли;


А вот как из этого обработку сделать - чет не соображу никак (


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 10:32
Сообщение #9

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

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

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

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    АвансовыйОтчет.Ссылка
                   |ИЗ
                   |    Документ.АвансовыйОтчет КАК АвансовыйОтчет
                   |ГДЕ
                   |    АвансовыйОтчет.Дата МЕЖДУ &Дата1 И &Дата2";
                  
    //делаем выборку                  
    Выборка = Запрос.Выполнить().Выбрать();
    //перебираем элементы выборки в цикле
    Пока Выборка.Следующий() Цикл
        //получим сам объект, чтобы иметь возможность его записать
        ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
        ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
        Сообщить("Записан " + ДокументОбъект);    
    КонецЦикла;
    Предупреждение("Обработка завершена!");


Это код для своей обработки - не нужно трогать ни реквизиты, ни комментарий.

А все, что выше - я говорила для универсальной встроенной обработки "Групповая обработка справочников и документов". Там нет понятия простой перезаписи документов - или проведение, или изменение реквизитов.

Сообщение отредактировал Rayne - 23.07.14, 10:34


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Veizdem Подменю пользователя
сообщение 23.07.14, 10:33
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Через произвольный алгоритм в "Универсальный подбор и обработка объектов" попробовал сейчас - оно отработало, выдало, мол успешно завершено и количество обработанных элементов показало, а в списке документов как было пусто в поле суммы, так и осталось.


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 10:35
Сообщение #11

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

А если документ вручную перезаписать - суммы появляются? Возможно, расчет вашего реквизита отрабатывает только при интерактивном проведении.


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Veizdem Подменю пользователя
сообщение 23.07.14, 10:37
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Цитата(Rayne @ 23.07.14, 11:32) *
В этом случае обязательно сделать копию базы. На копии потренироваться с групповой обработкой. Поинтересуйтесь у бухгалтеров нужны ли комментарии в авансовых отчетах. В групповой обработке отобрать все документы Авансовый отчет, на второй закладке выбрать действие Изменить комментарий. Выполнить. В этом случае проведения не будет, только запись.


На копии сижу постоянно, сейчас попробую сделать.

Цитата(Rayne @ 23.07.14, 11:35) *
А если документ вручную перезаписать - суммы появляются? Возможно, расчет вашего реквизита отрабатывает только при интерактивном проведении.


Вручную - появляется все нормально.


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 10:40
Сообщение #13

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

Реквизит в модуле форме рассчитывается? Если да - тогда надо в тот код, что я написала добавить еще расчет реквизита и присвоение.

       ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
       ДокументОбъект.СуммаПотрачено = ...; //здесь итоги складываем или что там надо посчитать
       ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Veizdem Подменю пользователя
сообщение 23.07.14, 10:43
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

Курс = ?(КурсВал = 0, 1, КурсВал);
    СуммаПотрачено = Состав.Итог("Сумма") + ?(НЕ ЦеныСНДС, Состав.Итог("НДС"), 0) / Курс + Оплата.Итог("Сумма");


Вот так считается сама сумма в модуле формы документа.


Signature
В моих жилах текут нолики и единички...

Rayne Подменю пользователя
сообщение 23.07.14, 10:49
Сообщение #15

Говорящий
Иконка группы
Группа: Местный
Сообщений: 86
Спасибо сказали: 17 раз
Рейтинг: 0

Ну вот этот кусочек туда и впихнуть, в эту обработку. А еще лучше попробовать ее перенести в модуль документа. Посмотрите для примера процедуру ПередЗаписью() в модуле документа и обратите внимание на то, как рассчитывается реквизит СуммаДокумента.


Signature
1С - как старый советский конструктор для детей. Вроде и все детали на месте, но без молотка и напильника нифига не собирается. (с) bash.im

Veizdem Подменю пользователя
сообщение 23.07.14, 14:25
Сообщение #16

Говорящий
***
Группа: Пользователи
Сообщений: 96
Из: Кривой Рог, Украина
Спасибо сказали: 10 раз
Рейтинг: 0

В общем реализовал таким образом:

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

Все отработало нормально, везде все суммы посчитало, была правда одна ошибка - там за 11 год еще не указан был вид НДС, а в таком случае запрет на запись стоит, но это уже не относится к работе данной обработки.

Всем спасибо.


Signature
В моих жилах текут нолики и единички...

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 9:36
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!