7.7 Обработка поля ввода формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nickvv, 4 май 2012.

  1. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Уважаемые эксперты, помогите.
    Стоит задача подправить документ списания ТМЦ в самописной конфигурации 7.7
    В поле ввода формы пользователь выбирает счет затрат (идентификатор СчетЗатрат, процедура ПриВыбореСчета(), тип значения Счет.Основной, реквизит шапки документа, т.е. относится ко всему документу).
    В зависимости от выбранного счета надо в колонку печатной формы документа подставить то или иное значение из простого справочника ПричинаСписания.
    Пытаюсь добавить в процедуру разные методы формы, но результат один - в нужном поле не появляется вообще ничего.
    Дайте, пожалуйста, толковый совет по выбору правильного метода.
    Спасибо
  2. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Если речь идет о печатной форме, то логично было бы заполнять колонку в процедуре печати. Вы бы хоть привели пример кода, который написали.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Так печатной формы или табличной части?
  4. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    В приложении - фрагмент модуля формы

    Вложения:

  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    И где в процедуре ПечатьАкта() хоть какое либо упоминание об ПричинахСписания?
  6. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Это надо только в печатной форме.
    Хоть и заполняется в каждой строке табличной части (так уж сложилось исторически), выбор счета затрат происходит в шапке документа. Т.е. для всей табличной части причина списания всегда одна и та же.
    Просто саму печатную форму руководство хочет оставить без изменений

    Процедура ПечатьАкта()
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Акт на списание");

    Таб.ВывестиСекцию("Шапка");
    ИтогКолич = 0;
    НомерПП = 0;
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Субсчет = ?(ТМЦ.Вид() = "ТМЦ",ТМЦ.СубСчет10,"43");
    Если ТМЦ.Выбран() = 1 Тогда
    НомерПП = НомерПП + 1;
    МатЦенность = ТМЦ;
    Код = ТМЦ.Код;
    ЕдиницаИзмерения = ТМЦ.ЕдиницаИзмерения;
    ЕдиницаИзмеренияКод = ТМЦ.ЕдиницаИзмерения.Код;
    КолОтпущено = КоличествоОтпущено;
    ПричинаСписанияПеч = ПричинаСписания.Наименование;
    ИтогКолич = ИтогКолич + КоличествоОтпущено;
    МатериалСумма = 0;
    МатериалЦенаБезНДС = 0;
    КонецЕсли;
    Таб.ВывестиСекцию("Строка");
    Состояние("Выведено строк: " + НомерСтроки);
    КонецЦикла;

    Таб.ВывестиСекцию("ИтОпись");
    Таб.ВывестиСекцию("Подвал");
    Таб.Опции(0, 0, 0, 0, "ОпцииПечатиАктаНаСписание", "ОкноАктНаСписание");
    Таб.ОбластьПечати(1, 2,,);
    Таб.ПовторятьПриПечатиСтроки(19, 21);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Акт на списание");
    КонецПроцедуры // Печать
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Так для чего выложили код документа когда нужен был макет?
    К тому же не зная взаимосвязи м.д. счетом и справочником ПричинСписания вам все равно никто не поможет.

    Все телепаты ушли с форума на телепроект "Битва экстрасенсов".
  8. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    "ПричинаСписания" в модуле формы - это что? Это реквизит документа? Или что- ещё?
  9. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Процедура Заполнить()

    Если Выбран() = 0 Тогда
    Предупреждение("Перед заполнением документ необходимо записать!", 60);
    Возврат;
    КонецЕсли;
    Если ПустоеЗначение(МестоХранения) = 1 Тогда
    Предупреждение("Не указано подразделение!", 60);
    Возврат;
    КонецЕсли;
    СпрПрич=СоздатьОбъект("Справочник.ПричинаСписания");
    //СпрПрич.НайтиПоНаименованию("Реализация",0,1);
    СпрПрич.Выбрать();

    Если КоличествоСтрок() > 0 Тогда
    Если
    Вопрос("Таблица будет очищена, а существующие строки удалены.
    |Продолжить?","Да+Нет") <> "Да" Тогда
    Возврат;
    КонецЕсли;
    УдалитьСтроки();
    КонецЕсли;

    БухИтоги = СоздатьОбъект("БухгалтерскиеИтоги");
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.ТМЦ,,);
    БухИтоги.ИспользоватьСубконто(ВидыСубконто.МестаХранения,МестоХранения,2,);

    БухИтоги.ВыполнитьЗапрос(ТекущийДокумент(),, "10.4",,,,, "СК");

    БухИтоги.ВыбратьСубконто(ВидыСубконто.ТМЦ);
    Пока БухИтоги.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл
    Если БухИтоги.Субконто(1).ПринадлежитГруппе(ВыбТМЦ)=1 Тогда
    КоличествоСписать = БухИтоги.СНД("К");
    Если КоличествоСписать <= 0 Тогда
    Продолжить;
    КонецЕсли;

    НоваяСтрока();
    ТМЦ = БухИтоги.Субконто(ВидыСубконто.ТМЦ);
    //НазначениеИспользования = НазначениеИспользования_;
    //Сотрудник = БухИтоги.Субконто(3);
    КоличествоЗатребовано = КоличествоСписать;
    Сумма = БухИтоги.СНД("С");
    ПричинаСписания=СпрПрич.ТекущийЭлемент();
    КонецЕсли;
    КонецЦикла;
  10. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    И я так и не понял: речь идет о табличной части или печатной форме (которую рукводоство менять не хочет)?

    А где Вы выбираете элемент? Где открываете выборку - я вижу, а где позиционируетесь на элементе - не вижу.
  11. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Пример печатной формы документа - см. вложение
    СчетЗатрат - реквизит шапки документа
    Т.е. в зависимости от выбора счета затрат в шапке документа надо в табличной части печатной формы заполнить соответствующее значения справочника ПричинаСписания (например: счет затрат 20 - "использовано", счет 62.1 - "реализовано")

    Вложения:

    • Акт.mxl
      Размер файла:
      23,4 КБ
      Просмотров:
      11
  12. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    И все-таки: где Вы позиционируетесь на элементе выборки?
  13. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Т.е. после СпрПрич.Выбрать(); надо что-то добавить? Что?

    Видимо, именно тут я и не могу найти выход?
  14. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Разумеется. НайтиПоКоду(), НайтиЭлемент(), НайтиПоНаименованию или запустить цикл через ПолучитьЭлемент(). Выбирайте, что Вам больше подходит.
  15. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    А как лучше? Вы бы что выбрали?
  16. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Мне неизвестна связь между счетом и причинами списания. Поэтому на Ваш вопрос я ответить не смогу.
  17. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    Тут выбор такой:
    1. если счет 62.1, то причина списания - "Реализация"
    2. если счет 20 или 76.5 - "Использовано"
    Ещё, наверное, тут и сообщение об ошибке надо бы по-хорошему организовать, если будет выбран какой-нибудь другой счет (или не выбран никакой)?
  18. Allizar
    Offline

    Allizar Опытный в 1С

    Регистрация:
    24 сен 2006
    Сообщения:
    413
    Симпатии:
    0
    Баллы:
    26
    Первый вариант: искать по наименованию, что не очень хорошо.
    Второй вариант: создать у справочника причин новый реквизит, в котором указывать связанный с причиной счет и затем использовать метод "НайтиПоРеквизиту()".
  19. TopicStarter Overlay
    nickvv
    Offline

    nickvv Опытный в 1С

    Регистрация:
    10 май 2011
    Сообщения:
    280
    Симпатии:
    0
    Баллы:
    26
    А как, во втором случае, к этому реквизиту привязать несколько счетов?
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.523
    Симпатии:
    407
    Баллы:
    104
    Какова структура справочника ПричинаСписания? Просто наименование и все?

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