8.х Сумма выбранных значений из столбца в документе.

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Addm, 12 дек 2012.

  1. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Что значит динамически? Вы всё время будете итоговую сумму пересчитывать? Зачем? Если она изменяется только при изменении значений в колонке СуммаОплаты, то обработчике ПриИзменении этой колонки и считайте.
    Если вам нужно число, то и устанавливайте тип Число.
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Кстати, а какова целесообразность данного поля? Итоговые данные можно показывать в подвале ТЧ, в дальнейших расчетах использовать итог по колонке ТЧ.
  3. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Я пока ещё не знаю что такое ТЧ и не дошёл до этого.
    Цель заключается, переделываю документ из MSExcel в 1С для оплаты филиалов сотрудниками и пытаюсь максимально сохранить структуру документа, сейчас доделаю проверку данных и суммирование и затем буду изучать как печать делается документов в 1С. Надеюсь в печати не нужно виртуального ничего создавать что бы сформировался печатный экземпляр.
    По сути данные эти пока нигде использоваться не будут, т.е. документ замкнут сам на себя, за исключением некоторых полей, которые берут инфу из заполненных справочников (для удобства, что бы 100 раз не заполнять одно и тоже).
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    ТЧ - это табличная часть.
    Если вам так нужно доп. поле, которое дублирует итоги табличной части, то заполнять "динамически" его можно в обработчике формы ОбновлениеОтображения.
  5. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    А можно простой пример? Я сделал через события "ПриИзменении" и "ОбработкаВыбора", пока работает как надо.
  6. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Как можно сделать проверку, что бы отказывала в записи, если в табличную часть ничего не внесено?
    Сделал общий модуль, нужным полям в ТЧ установил отметку не заполненного, но проверка не работает, т.е. всё равно записывает документ. Код проверки вписал на саму форму в событии "ПередЗаписью"
  7. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    В обработчике формы ПередЗаписью
    Код:
    Отказ = Истина;
  8. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Блин! Почему так просто? Я общий модуль подключал и функцию писал. Ну для полей ввода на форме эта функция работает.
  9. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    нет так тоже не то, получается, что я просто делаю полный отказ на запись даже введенных данных.
  10. Tiger86
    Offline

    Tiger86 Модераторы Команда форума Модератор

    Регистрация:
    24 мар 2011
    Сообщения:
    6.407
    Симпатии:
    108
    Баллы:
    104
    значит проверка не отработала, раз даже на внесенные данные все равно отказ
  11. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Если без всяких условий, то да. Вы ж говорили, что код проверки написали. При выполнении условия незаполненности и "отказывайте" в записи документа.
  12. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Код:
     Функция НезаполненыОбязательныеПоля(Форма) Экспорт
    Для каждого ЭлементФормы Из Форма.ЭлементыФормы Цикл
    Если ТипЗнч (ЭлементФормы) = Тип("Полеввода") Тогда
    Если ЭлементФормы.АвтоОтметкаНезаполненного Тогда
    Если НЕ ЗначениеЗаполнено(Форма.ЭлементыФормы[ЭлементФормы.Имя].Значение) Тогда
    Предупреждение("Не заполнено обязательное поле """ + ЭлементФормы.Имя + """", 10);
    Форма.ТекущийЭлемент = ЭлементФормы;
    Возврат Истина;
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
    Возврат Ложь;
    КонецФункции
    
    но он работает только для Полей Ввода на форме, когда устанавливаю галочку "АвтоОтметкаНезаполненного", а для поле ввода в ТЧ не срабатывает с такой же галочкой. Я его общим модулем подключил и вставляю в событие "ПередЗапись":
    Код:
    ...
    Отказ = НезаполненыОбязательныеПоля(ЭтаФорма);
    ...
  13. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Так вы ж только поля ввода проверяете. Добавьте ещё проверку колонок табличного поля.
  14. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    :blink: хватит на сегодня 1С, я уже ничего не вижу и не отражаю, завтра займусь этим.
  15. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    А как к ТЧ обратиться и проверить установлен ли параметр "АвтоОтметкаНезаполенного"?
  16. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    [CODE1C]
    Для каждого ТекКолонка Из ЭлементыФормы.{ТабличнаяЧасть}.Колонки Цикл
    Если ТекКолонка.АвтоОтметкаНезаполненного Тогда
    // параметр установлен
    КонецЕсли;
    КонецЦикла;
    [/CODE1C]
    Но кодом выше вы определите только колонки с установленным параметром. Далее нужно будет организовывать цикл по строкам и проверять по искомым колонкам заполненность значений.
  17. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    Сделал немного проще. Как сделать проверку для каждого поля ТЧ я разобрался, достаточно в событии "ПриОкончанииРедактирования" разместить код:
    Код:
    Если НЕ ЗначениеЗаполнено(полевводаТЧ)
    Тогда
    Предупреждение("Не заполненно поле полевводаТЧ");
    Отказ = Истина;
    Иначе
    КонецЕсли; 
    А вот что бы пользователь не мог записать совсем пустой документ:
    Посмотреть вложение 13330
    Я сделал просто проверку по ключевому полю, которое изменятся в зависимости от изменения других полей, что расположены ниже, которые в свою очередь изменяются в зависимости от полей ТЧ куда вносим суммы оплаты, таким образом выстраивается простая цепочка последовательности и легко контролируется ввод данных + поля, где показывается итог подвалов и суммы сделал доступными только для просмотра.

    Вложения:

    • 123.JPG
      123.JPG
      Размер файла:
      63,8 КБ
      Просмотров:
      3
  18. TopicStarter Overlay
    Addm
    Offline

    Addm Опытный в 1С

    Регистрация:
    22 ноя 2011
    Сообщения:
    110
    Симпатии:
    0
    Баллы:
    26
    И тогда само поле "Наименование" в ТЧ проверять не надо, т.е. не выбрав данные ничего не запишется, а если выбраны, то не запишется без суммы, т.е. проверка замкнута.

Поделиться этой страницей