Подскажите Табл.Знач.

Тема в разделе "1C и всё что с ней связано", создана пользователем -, 18 янв 2009.

  1. Гость

    Здравствуйте всем.
    Подскажите пожалуйста, 3 дня борюсь уже :)

    Внешняя обработка, добавить в ТЗ из справочника Сотрудники при двойном нажатии на строке.
    Что я недописываю, заранее спасибо.

    Перем ТК;
    //*************************************
    Процедура ПриОткрытии()
    ТЗ.Очистить();
    ТЗ.НоваяКолонка(,,,,"№",1);
    ТЗ.НоваяКолонка(,,,,"Сотрудник",4);
    КонецПроцедуры
    //*************************************
    Процедура Открыть(ТЗ)
    ТС=ТЗ.ТекущаяСтрока();
    ТК=ТЗ.ТекущаяКолонка();
    ОткрытьПодбор("Справочник.Сотрудники");
    КонецПроцедуры
    //*************************************
    Процедура ОбработкаПодбора(ТС)
    ТекЗнач=ТС;

    Сообщить(ТС);
    ТЗ.УстановитьЗначение(ТС,ТК,ТекЗнач);//тут ошибка
    //Номер за пределами значения!
    КонецПроцедуры
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    колонки у тебя без имени
    надо так :
    ТЗ.НоваяКолонка("Номер",,,,"№",1);
    ТЗ.НоваяКолонка("Сотрудник",,,,,4);
    да и
    ТЗ.НоваяСтрока()
    надо бы сделать, прежде, чем заполнять
     
  3. Гость

    Поправил, но тот же эффект :)

    Перем ТК;
    //*************************************
    Процедура ПриОткрытии()
    ТЗ.Очистить();
    ТЗ.НоваяКолонка("Номер",,,,"№",1);
    ТЗ.НоваяКолонка("Сотрудник",,,,,4);
    КонецПроцедуры
    //*************************************
    Процедура Открыть(ТЗ)

    ТС=ТЗ.ТекущаяСтрока();
    ТК=ТЗ.ТекущаяКолонка();
    ОткрытьПодбор("Справочник.Сотрудники");
    КонецПроцедуры
    //*************************************
    Процедура ОбработкаПодбора(ТС)
    ТЗ.НоваяСтрока();
    ТекЗнач=ТС;
    Сообщить(ТС);
    ТЗ.УстановитьЗначение(ТС,ТК,ТекЗнач);//тут ошибка
    //Номер за пределами значения!
    КонецПроцедуры
     
  4. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Перем ТС;
    Процедура Открыть(ТЗ)
    ТЗ.НоваяСтрока();
    ТС=ТЗ.ТекущаяСтрока();
    ТК=ТЗ.ТекущаяКолонка();
    ОткрытьПодбор("Справочник.Сотрудники");
    КонецПроцедуры
    //*************************************
    Процедура ОбработкаПодбора(ТекЗнач)
    Сообщить(ТС);
    ТЗ.УстановитьЗначение(ТС,ТК,ТекЗнач);//тут ошибка
    //Номер за пределами значения!
    КонецПроцедуры
     
  5. Гость

    Спасибо за помощь! Теперь в строку попадает содержимое справочника, только не закрывается справочник после вычпокивания нужной фамилии. :)

    Перем ТК, ТС;
    //*************************************
    Процедура ПриОткрытии()
    ТЗ.Очистить();
    ТЗ.НоваяКолонка("Номер",,,,"№",1);
    ТЗ.НоваяКолонка("Сотрудник",,,,,4);
    КонецПроцедуры
    //*************************************
    Процедура Открыть(ТЗ)

    ТЗ.НоваяСтрока();
    ТС=ТЗ.ТекущаяСтрока();
    ТК=ТЗ.ТекущаяКолонка();
    ОткрытьПодбор("Справочник.Сотрудники");

    КонецПроцедуры
    //*************************************
    Процедура ОбработкаПодбора(ТекЗнач)

    Сообщить(ТС);
    ТЗ.УстановитьЗначение(ТС,ТК,ТекЗнач);

    КонецПроцедуры
     
  6. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    попробуй вместо ОткрытьПодбор использовать
    ВвестиЗначение(ТекЗнач,"Справочник.Сотрудники");
     
  7. Гость

    В данной обработке мне нужен именно подбор, сложности которые у меня возникли с таблицей, тормозят написание основного проекта.
    Просто тема ТЗ мною до конца не изучена, я её и выделил в отдельную обработу.

    Ась, разобрался :) , параметры подбора не расписал!
     
  8. Гость

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

    Ан нет, нашел, сори.
     
  9. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Во, сколько всего нового узнал, и почти все самостоятельно !
    Может, и не стоит сразу в форум вопросы кидать ?
     
  10. Гость

    Да так и получается, бъёшся как об стену, а потом удивляешься как всё просто было )

    Вот совета прошу ещё:

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

    В каком порядке действовать, какими инструментами?
     
  11. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    к табличной части добавляешь колонку типа "текст" и на ее закладке "дополнительно" прописываешь формулу, по которой туда будут выводиться данные
     
  12. Гость

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

    Вот примерно так, может кому интересно, но это работает :)
    Это процесс при выборе закладок в накладной.

    Процедура ПриВыбореЗакладки(Ном, Значен)

    Если Значен = "Подробности" Тогда
    Форма.ИспользоватьСлой("Подробности, 2");
    Форма.ИспользоватьСлой("Основной", 1);

    //Заполнение ТЗ
    ТабЗнРек.Очистить();
    ТабЗнРек.НоваяКолонка("Номер",,,,"№",1);
    ТабЗнРек.НоваяКолонка("Товар",,1,0,,4);
    ТабЗнРек.НоваяКолонка("Недостача",,1,0,,3);
    ТабЗнРек.НоваяКолонка("Излишек",,1,0,,3);
    ТабЗнРек.НоваяКолонка("Сортировщик",,1,0,,3);

    // Заполнение ТЗ в "Подробностях" содержимым табличной части.
    ТЗ = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗ);
    ТЗ.ВыбратьСтроки();

    Пока ТЗ.ПолучитьСтроку() = 1 Цикл
    Стр = 0;
    Стр = ТЗ.НомерСтроки;
    Тов_=ТЗ.ПолучитьЗначение(Стр,"Товар");
    Нед_=ТЗ.ПолучитьЗначение(Стр,"Недостача");
    Изл_=ТЗ.ПолучитьЗначение(Стр,"Излишек");
    Сорт_=ТЗ.ПолучитьЗначение(Стр,"Сортировщик");

    Если Нед_ + Изл_ > 0 Тогда
    ТабЗнРек.НоваяСтрока();
    СтрТабЗнРек = ТабЗнРек.НомерСтроки;
    ТабЗнРек.УстановитьЗначение(СтрТабЗнРек,"Номер",Стр);
    ТабЗнРек.УстановитьЗначение(СтрТабЗнРек,"Товар",Тов_);
    ТабЗнРек.УстановитьЗначение(СтрТабЗнРек,"Недостача",Нед_);
    ТабЗнРек.УстановитьЗначение(СтрТабЗнРек,"Излишек",Изл_);
    ТабЗнРек.УстановитьЗначение(СтрТабЗнРек,"Сортировщик",Сорт_);

    КонецЕсли;
    КонецЦикла;

    ИначеЕсли Значен = "Основной" Тогда
    Форма.ИспользоватьСлой("Основной", 2);
    Форма.ИспользоватьСлой("ТаблицаПоОтгрузке", 1);

    // Заполняем колонку "Сортировщик"
    ТЗДоп = СоздатьОбъект("ТаблицаЗначений");
    ВыгрузитьТабличнуюЧасть(ТЗДоп);
    ТЗДоп.ВыбратьСтроки();

    Пока ТЗДоп.ПолучитьСтроку() = 1 Цикл
    Стр = ТЗДоп.НомерСтроки;
    Тов_=ТЗДоп.ПолучитьЗначение(Стр,"Товар");

    ТЗР = СоздатьОбъект("ТаблицаЗначений");//Смотрим ТЗ "косяки"
    ТабЗнРек.ВыбратьСтроки();
    Пока ТабЗнРек.ПолучитьСтроку() = 1 Цикл
    СтрР = ТабЗнРек.НомерСтроки;
    Тов_Р = ТабЗнРек.ПолучитьЗначение(СтрР,"Товар");
    Сорт = ТабЗнРек.ПолучитьЗначение(СтрР,"Сортировщик");

    Если Тов_Р = Тов_ Тогда
    ТЗДоп.УстановитьЗначение(Стр,"Сортировщик",Сорт);
    КонецЕсли;
    КонецЦикла;

    КонецЦикла;
    ЗагрузитьТабличнуюЧасть(ТЗДоп);
    Иначе
    Форма.ИспользоватьСлой("Основной", 2);
    Форма.ИспользоватьСлой("ТаблицаПоОтгрузке", 1);
    КонецЕсли;

    КонецПроцедуры
     
Загрузка...

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