Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
12 Дек 2017, 09:35
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как добавить колонки в таблицу...  (Прочитано 5417 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Доброе утро. Есть ТиС 77 уже здорово подъшаманеная, если можно так выразится. Назрела необходимость произвести некоторую модернизацию. Вобщем, дело вот в чём.Накладная на перемещение формируется через "ввести на основании" из приходной накладной, да и вообще просто из журнала складских документов. Табличная часть приходной накладной обладает целым спектром цен (ЦенаБезНДС, ЦенаСНДС),в то время как накладная на перемещение только лишь розничной ценой.  Хочу добавить в накладную на перемещение колонку с ЦенойБезНДС или ЦенаСНДС, т.е. закупочные, но не розничные. Для чего это делается: хочу оформить пакетное преобразование цен. А ещё не могу добавить просто пустое поле числового типа. Поизучав форму, понял, что просто так добавить не получится (хотя текстовое добавляется), а при попытке добавить реквизит происходит реструктуризация БД. Вобщем, 1С только начал изучать. Тыкните, пожалуйста, пальцем где и что смотреть.


Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Немного нарыл тут. Вобщем, добавил реквизит числовой, включил его в реквизитах формы, в таблице появилась нужная колонка. Теперь нужно заполнить её значениями цены. Подсмотрел как это делается в приходной накладной: там в свойствах колонки в формуле стоит вызов функции/процедуры 
глВыч_суммы_накл(Контекст,1);
. Сделал так же. Ничего не получилось - значения не подтянулись. Для меня полный лес, что такое "контекст" и что за параметр "1".
Добавлено: 04 Окт 2014, 12:21

Понял, что функция должна передать данные о товарах, к которым нужно подтянуть цены.

Последний раз редактировалось: Tesla; 04 Окт 2014, 12:21. Причина: Объединение сообщений

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
вот куда пишите -глВыч_суммы_накл(Контекст,1); = сюда пишется имя функции которая вернет значение. в модуле нужно описать работы этой функции, напрмиер -= ВернутьЦену()  и в модуле гдето должно быть описано:

Функция ВернутьЦену()
Рез = 0;
//ВЫчисляем рез;
Возврат Рез;
КонецФункции
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
C этим как раз проблема. Пока не знаю как считается цена. Да и вообще, не представляю конструкцию функции в целом.

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
Тогда может книги почитать и на курсы сходить? или программера нанять.. ТАк просто можно все порушить ненароком..
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
Посоветуйте книгу...

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
Книга! - Описание Встроенного языка 7.7! щаз чонибуть найдем в инете...
Добавлено: 04 Окт 2014, 19:51

http://www.firststeps.ru/1c/
Добавлено: 04 Окт 2014, 19:53

http://club-1c.com/topic/315-%D0%BD%D0%B0%D1%87%D0%B8%D0%BD%D0%B0%D1%8E%D1%89%D0%B8%D0%BC-1%D1%81-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0%D0%BC-%D0%BF%D0%BE%D1%81%D0%B2%D1%8F%D1%89%D0%B0%D0%B5%D1%82%D1%81%D1%8F/
Помог? Нажми - Спасибо :)
skype: Soprov1C

Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С

Оффлайн Tesla

  • *
  • Сообщений: 44
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-14
  • Сайт: 
  • Профессия: Ученик 1С
похоже всё-таки способ загрузкой документа и одновременно подстановка закупочной цены не подходит. Лучше повесить подставление последней закупочной цены ориентируясь по коду товара, на процедуру, и вызывать по требованию. Тоесть, последовательность такая:

1. Открылся документ.
2. По нажатию кнопки заполняем колонки ценами.
3. Обновляем старые цены только в табличной части.
4. Обновление цен справочника остаётся стандартное.

По идее, можно воспользоваться запросом цен к регистру.
Собсно вопрос: как лучше устроить этот запрос?

Вот тот запрос к регистру для отчёта:
Процедура ОстаткиТоваровССебестоимостью()
   
Если ВалютаИтогов.Выбран()=0 Тогда
    Предупреждение("Не выбрана валюта итогов");
Возврат;
КонецЕсли;

Заг="";
Заг1="";
   
глЗаголовокФирма(ВыбФирма,Заг,Язык);

ВИ = ВалютаИтогов.ТекущийЭлемент();

    // Здесь формируется отчет, который использует регистры, критичные к
    // последовательности проведения документов
    // поэтому сравним установленные даты периода формируемого отчета с ГП
    глПроверкаАктуальностиОтчета('01.01.1980',Дата2,"Общ",ВыбФирма,0);

Запрос=СоздатьОбъект("Запрос");

ТекстЗапроса="       
|ПЕРИОД С Дата2 По Дата2;
|Фирма = Регистр.ПартииТоваров.Фирма;
|Товар = Регистр.ПартииТоваров.Товар;
|Статус = Регистр.ПартииТоваров.Статус;
|Стоимость = Регистр.ПартииТоваров.Стоимость;
|СтоимостьНДС = Регистр.ПартииТоваров.НДС;
|Кол = Регистр.ПартииТоваров.ОстатокТовара;
|Группировка Товар;
|Группировка Статус;
|Функция КонКол = КонОст(Кол);
|Функция КонСтоим = КонОст(Стоимость);
|Функция КонСтоимНДС = КонОст(СтоимостьНДС);
|Условие (Фирма  =  ВыбФирма);
|Условие (Статус <> Услуга);
|";   

Заг="";
Заг1="";                        

Если ФильтрыИЗаголовкиПоТоварамИСкладам(ТекстЗапроса,Заг,Заг1)=0 Тогда
Возврат;
КонецЕсли;

Флаг=Запрос.Выполнить(ТекстЗапроса);
Если Флаг=0 Тогда
Предупреждение("запрос по регистру ПартииТоваров не выполнился!");
Возврат;
КонецЕсли;

глЧислоСтрок = 0;
ИтогоВалСто = 0;
ИтогоКупленоСтоим = 0;
ИтогоОтданоКуплСтоим = 0;
ИтогоОтданоПринСтоим = 0;
ИтогоПринятоСтоим = 0;

//  Создание Таблицы для выходного отчета
Т.ИсходнаяТаблица("ОстаткиВцелом"+Язык);
   
Заг=Заг+?(Язык="у","Валюта підсумків: ","Валюта итогов: ")+ВалютаИтогов.Кратко+". ";

    Т.ВывестиСекцию("Кнопки");
Т.ВывестиСекцию("Отчет");
глОживить(4);

Пока Запрос.Группировка("Товар") = 1 Цикл
Если Запрос.Товар.Выбран()=0 Тогда
Продолжить;
КонецЕсли;
Наим=глТоварВОтчете(Запрос.Товар);
Если Запрос.Товар.ЭтоГруппа()=1 Тогда
Т.ВывестиСекцию("Группа");
глОживить(1);
Продолжить;
КонецЕсли;
ПартииТовара=СоздатьОбъект("СписокЗначений");

Если ВыбФирма.Выбран()=1 Тогда
ВУ=Гривня;
Иначе
ВУ=Запрос.Товар.ВалютаУчета;
КонецЕсли;


ОбщКупленоСтоим = 0;
ОбщКупленоОстат = 0;
ОбщОтданоКуплСтоим = 0;
ОбщОтданоКуплОстат = 0;
ОбщОтданоПринСтоим = 0;
ОбщОтданоПринОстат = 0;
ОбщПринятоСтоим = 0;
ОбщПринятоОстат = 0;

ОбщКонСтоим = 0;
ОбщКонОстат = 0;

ОбщКонСтоим=?(ПустоеЗначение(ВыбФирма)=1,Запрос.КонСтоим+Запрос.КонСтоимНДС,Запрос.КонСтоим);
ОбщКонОстат=Запрос.КонКол;
Пока Запрос.Группировка("Статус") = 1 Цикл
Если (Запрос.Статус=Купленный) или (Запрос.Статус=РозницаКупленный) Тогда
ОбщКупленоСтоим = ОбщКупленоСтоим + ?(ПустоеЗначение(ВыбФирма)=1,Запрос.КонСтоим+Запрос.КонСтоимНДС,Запрос.КонСтоим);
ОбщКупленоОстат = ОбщКупленоОстат + Запрос.КонКол;
ИначеЕсли Запрос.Статус=ОтданныйКупленный Тогда
ОбщОтданоКуплСтоим = ?(ПустоеЗначение(ВыбФирма)=1,Запрос.КонСтоим+Запрос.КонСтоимНДС,Запрос.КонСтоим);
ОбщОтданоКуплОстат = Запрос.КонКол;
ИначеЕсли Запрос.Статус=ОтданныйПринятый Тогда
ОбщОтданоПринСтоим = ?(ПустоеЗначение(ВыбФирма)=1,Запрос.КонСтоим+Запрос.КонСтоимНДС,Запрос.КонСтоим);
ОбщОтданоПринОстат = Запрос.КонКол;
ИначеЕсли (Запрос.Статус=Принятый) или (Запрос.Статус=ПринятыйБезПраваПередачи)
или (Запрос.Статус=РозницаПринятый) или (Запрос.Статус=РозницаПринятыйБезПраваПередачи) Тогда
ОбщПринятоСтоим = ОбщПринятоСтоим + ?(ПустоеЗначение(ВыбФирма)=1,Запрос.КонСтоим+Запрос.КонСтоимНДС,Запрос.КонСтоим);
ОбщПринятоОстат = ОбщПринятоОстат + Запрос.КонКол;
КонецЕсли;
КонецЦикла;

ПечКупленоКол_во = глФРМКоличествоВОтчете(ОбщКупленоОстат,    Запрос.Товар);
ПечОтданоКуплКол_во = глФРМКоличествоВОтчете(ОбщОтданоКуплОстат, Запрос.Товар);
ПечОтданоПринКол_во = глФРМКоличествоВОтчете(ОбщОтданоПринОстат, Запрос.Товар);
ПечПринятоКол_во = глФРМКоличествоВОтчете(ОбщПринятоОстат,    Запрос.Товар);

КупленоСтоимость = глФРМ(ОбщКупленоСтоим, ВУ,1);
ОтданоКуплСтоимость = глФРМ(ОбщОтданоКуплСтоим, ВУ,1);
ОтданоПринСтоимость = глФРМ(ОбщОтданоПринСтоим, ВУ,1);
ПринятоСтоимость = глФРМ(ОбщПринятоСтоим, ВУ,1);

ВалютнаяСтоимость=глФРМ(ОбщКонСтоим,ВУ,1);
Цена=?(ОбщКонОстат<>0,глФРМ(ОбщКонСтоим/глКоличествоВОтчете(ОбщКонОстат,Запрос.Товар),ВУ,1),"");

Т.ВывестиСекцию("Товар");
ИтогоВалСто = ИтогоВалСто + глПересчет(ОбщКонСтоим, ВУ,Дата2,ВалютаИтогов,Дата2);
ИтогоКупленоСтоим = ИтогоКупленоСтоим + глПересчет(ОбщКупленоСтоим, ВУ,Дата2,ВалютаИтогов,Дата2);
ИтогоОтданоКуплСтоим = ИтогоОтданоКуплСтоим + глПересчет(ОбщОтданоКуплСтоим,ВУ,Дата2,ВалютаИтогов,Дата2);
ИтогоОтданоПринСтоим = ИтогоОтданоПринСтоим + глПересчет(ОбщОтданоПринСтоим,ВУ,Дата2,ВалютаИтогов,Дата2);
ИтогоПринятоСтоим = ИтогоПринятоСтоим + глПересчет(ОбщПринятоСтоим, ВУ,Дата2,ВалютаИтогов,Дата2);
глОживить(1);
КонецЦикла;
Т.ВывестиСекцию("Итоги");
глОживить(1);
//Вызов выходного отчета в окно просмотра и редактирования.
Т.ТолькоПросмотр(1);
Т.Опции(0,0,8,0);
Т.ОбластьПечати(2);
Т.Показать("Остатки товаров","");

ОтчетСформирован = 1;

КонецПроцедуры       // ОстаткиТоваровССебестоимостью
 

Оффлайн дфтын

  • Могу решить ЛЮБУЮ задачу в 1С и не только.. С вопросами в личку:)
  • *****
  • Сообщений: 2720
  • РЕПУТАЦИЯ: 325
  • КПД: 12%
  • 1С наше все
  • Регистрация: 2014-04-29
    • Skype: Soprov1C
  • Компания: Корпорация зонтиков
  • Профессия: Разработчик 1С
так.
все не так.
Итак:
1. вам нужно выбрать ПОСЛЕДНЮЮ ЗАКУПОЧНУЮ ЦЕНУ по этому товару, до даты документа.
2. поместить в документ

пишу(пишу не проверяя, и сокращая):
Процедура ЗаполнитьЗакупочныеЦены()
Выбрать Строки()
Пока ПолучитьСтроку()= 1 цикл
Текст = "|ПЕРИОД  По ДатаДок;
  |Фирма            = Регистр.ПартииТоваров.Фирма;
    |Товар            = Регистр.ПартииТоваров.Товар;
    |ПартияДАта = Регистр.ПартииТоваров.Партия.ДатаДок;
    |Статус            = Регистр.ПартииТоваров.Статус;
    |Стоимость        = Регистр.ПартииТоваров.Стоимость;
    |СтоимостьНДС    = Регистр.ПартииТоваров.НДС;
    |Кол            = Регистр.ПартииТоваров.ОстатокТовара;
    |Группировка Товар;
    |Функция КонСтоим     = КонОст(Стоимость);
    |Функция КонСтоимНДС = КонОст(СтоимостьНДС);
    |Условие (Товар    =  ВыбТовар);
    |Условие (Фирма    =  ВыбФирма);
    |Условие (Статус <> Услуга);
    |СОРТИРОВКУ НАДО!!! я забыл как:) помню упорядочить по ПартияДата УБЫВ
    |";   
Запрос.выполнить

 Пока Запрос.Группировка("Товар") = 1 Цикл
ЦенаЗакупки  = Запрос.КонСтоим ;
Прервать;
 КонецЦикла;
КонецЦИкла;
КонецПроцедуры


Вот так, например. я чото уже забыл ка ктам в 7ке забубенить чтоб запрос в таблицу значений.. ну короче это должно сработать, нужно будет соптимизировать - включу архивные ячейки памяти свои
Помог? Нажми - Спасибо :)
skype: Soprov1C


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
167 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
55 Сообщений
alex0402
46 Сообщений
andron81_81
42 Сообщений
AIFrame
37 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
BuhRust
29 Сообщений
Golickoff Golickoff
28 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 674
  • Точка Скрытых: 0
  • Точка Пользователей: 12
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal