Перейти к содержимому


Услуги программиста 1С
Профессиональные программисты 1С.
Весь комплекс услуг сопровождения 1С.

Курсы 1С
Бухгалтерам, менеджерам
и программистам.
Бесплатно!
Живое индивидуальное обучение по 1С.

Помогите разобраться Открытие документа


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 18

#1   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 24 December 2010 - 20:17

Ситуация такова: есть почти готовая база, в которой есть документ ПродажаТоваров в модуле которой описано что при покупке свыше 1000грн доставка бесплатна - есть условие >1000 и задается вопрос ДаНет. Так вот мне нужно чтобы при нажатии Да и последующем проведении форма документа ПродажаТоваров закрывалась и открывалась форма ЗаявкаНаДоставку. Привожу часть модуля документа ПродажаТоваров:
&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;
Если Стр.Сумма>1000 Тогда
Режим = РежимДиалогаВопрос.ДаНет;

Текст = "Бесплатная доставка?";
Ответ = Вопрос(НСтр(Текст), Режим, 0);
///ОткрытьФорму("Документ.ЗаявкаНатранспорт.ФормаДокумента"); - вот в это месте немогу понять что сделать или я может вобще не то делаю.

Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;

КонецЕсли ;
Объект.СуммаДокумента=Объект.Товары.Итог("Сумма");

КонецПроцедуры

Буду признательно благодаен за помощь.
ОДЗ нужно до завтра сдать)))

  • 0

#2   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 24 December 2010 - 21:07

Почему проверяешь только сумму текущей строки?
На каждую строку, в которой будет больше 1000, отдельная Заявка?
  • 0
Киев

#3   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 24 December 2010 - 21:43

&Сервере
Процедура ЗавдениеЗаявки()
НовыйДокумент=Документы.ЗаявкаНаТраспорт.СоздатьДокумент();
Форма=Документ.ЗаявкаНаТранспорт.ПолучитьФорму();
Форма.Открыть("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;
Если Стр.Сумма>1000 Тогда
Режим = РежимДиалогаВопрос.ДаНет;

Текст = "Бесплатная доставка?";
Ответ = Вопрос(НСтр(Текст), Режим, 0);
ЗаведениеЗаявки();
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;

КонецЕсли ;
Объект.СуммаДокумента=Объект.Товары.Итог("Сумма");

КонецПроцедуры

{Документ.ПродажаТоваров.Форма.ФормаДокумента.Форма(42,13)}: Процедура или функция с указанным именем не определена (ЗаведениеЗаявки)
<<?>>ЗаведениеЗаявки(); (Проверка: Тонкий клиент)

В данном случае не нужно проверять все строки. Лишь бы первую заделало. Вот делаю так и всеравно ошибка! По существу можно??

  • 0

#4   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 24 December 2010 - 21:49

biggrin А это как раз очень по существу... "Помогите разобраться..."?

Добавлено (24.12.2010, 21:49)
---------------------------------------------
1. Проверять нужно Итог тч Товары, когда док полностью сформирован.
2. Если док не проведен или при проведении возникла ошибка - вопросы задавать бесполезно.

Вопрос: Где (в какой процедуре) все это можно проанализировать?

  • 0
Киев

#5   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 24 December 2010 - 22:08

Ваше замечание понял! Но как реализовать это?
может выложить базу и Вы подправите?

&НаСервереБезКонтекста
Функция ПолучитьЦенуНоменклатуры(Номенклатура)

Возврат Номенклатура.ЦенаПокупки;

КонецФункции

&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Цена=ПолучитьЦенуНоменклатуры(Стр.Номенклатура);
КоличествоПриИзменении(Элемент);

КонецПроцедуры

&НаКлиенте
Процедура Действие(Команда)
// Вставить содержимое обработчика.
КонецПроцедуры

&Сервере
Процедура ЗаведениеЗаявки()
НовыйДокумент=Документы.ЗаявкаНаТраспорт.СоздатьДокумент();
Форма=Документ.ЗаявкаНаТранспорт.ПолучитьФорму();
Форма.Открыть("Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента");
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;
Если Стр.Сумма>1000 Тогда
Режим = РежимДиалогаВопрос.ДаНет;

Текст = "Бесплатная доставка?";
Ответ = Вопрос(НСтр(Текст), Режим, 0);
ЗаведениеЗаявки();
Если Ответ = КодВозвратаДиалога.Нет Тогда
Возврат;
КонецЕсли;

КонецЕсли ;
Объект.СуммаДокумента=Объект.Товары.Итог("Сумма");

КонецПроцедуры

Нужно чтобы после нажатия Ок в впоросе и после проведения Создавался документ ЗаявкаНаТранспорт
Но пока я реализировав не так... И плюс по нажатию Ок выбивает Что функция не определена

Добавлено (24.12.2010, 22:08)
---------------------------------------------
http://depositfiles....files/f9nok066q

  • 0

#6   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 24 December 2010 - 22:29

&Сервере - такой команды нет... исправить
1. Уберите все лишнее из КоличествоПриИзменении, у Вас из-за "нет"-Возврат СуммаДокумента не пересчитается.
2 В предопр процедуре ПослеЗаписи проверяйте Режим, Отказ, СуммуДокумента, задавайте вопрос. Никаких Возврат не нужно, ЗаведениеЗаявки вызывается, если ответ "Да".
3. В самой процедуре - подумайте, что пишете.

Пару часов подумать с умной книгой под рукой - разберетесь.

Добавлено (24.12.2010, 22:29)
---------------------------------------------
Не теряйте время, я решением контрольных не занимаюсь.

  • 0
Киев

#7   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 24 December 2010 - 23:06

да но я уже курю несколько дней
НаСервере исправлено
1 На что поменять не понял
2 Как проверить Режим(и для чего он нужен), отказ, сумму документа...
Одним словом я ламер!
я так понял вы понимающий
Исправте пожалуста...

Добавлено (24.12.2010, 22:34)
---------------------------------------------
и это не контрольная! это зачет))

Добавлено (24.12.2010, 22:50)
---------------------------------------------
10 строчек что кому-то лень написать?

Добавлено (24.12.2010, 23:06)
---------------------------------------------
Обьясните хотябы где почитать ПослеЗаписи - нигде не нашел...

  • 0

#8   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 24 December 2010 - 23:38

Code

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
   
  Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение И Объект.Товары.Итог("Сумма") > 1000 Тогда
   Режим = РежимДиалогаВопрос.ДаНет;

   Текст = "Бесплатная доставка?";
   Ответ = Вопрос(Текст, Режим, 0);
                
   Если Ответ = КодВозвратаДиалога.Да Тогда
    ЗаведениеЗаявки();
   КонецЕсли;
     КонецЕсли;

КонецПроцедуры

Вот так, нпр

Добавлено (24.12.2010, 23:29)
---------------------------------------------

Code

Процедура КоличествоПриИзменении(Элемент)
   
  Стр = Элементы.Товары.ТекущиеДанные;
  Стр.Сумма = Стр.Количество * Стр.Цена;
   
  Объект.СуммаДокумента=Объект.Товары.Итог("Сумма");
   
КонецПроцедуры

В этой больше ничего не нужно.

Добавлено (24.12.2010, 23:38)
---------------------------------------------
Теперь только пропиши нормально ЗаведениеЗаявки() - и все получится.

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

  • 0
Киев

#9   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 25 December 2010 - 00:39

да не в том дело! разобраться я могу... но сесия... времени нет... дел погорло... бюджетникам гулявшим год тяжко приходиться

Добавлено (25.12.2010, 00:38)
---------------------------------------------
суть том что диалогового окна при проведении небыло

Добавлено (25.12.2010, 00:38)
---------------------------------------------
спасибо большое что уделили время... но видемомо мне не заставить его работать так как надо

  • 0

#10   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 25 December 2010 - 00:53

Quote (vad14)
суть том что диалогового окна при проведении небыло

Код возврата диалога на ДА не поменяли?

  • 0
Киев

#11   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 25 December 2010 - 00:56

Если Ответ = КодВозвратаДиалога.Да Тогда
ЗаведениеЗаявки();
как Вы и писали выше....
  • 0

#12   Zaval

Zaval

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 1109
    • Регистрация: 26-December 07
    • Откуда: , ,

Отправлено 25 December 2010 - 01:00

Внимательнее, с моим кодом вопрос появляется.

Добавлено (25.12.2010, 01:00)
---------------------------------------------
Сумма больше 1000?

ЗЫ. Все, мне пора бежать... мож. еще кто подтянется. Удачи.

  • 0
Киев

#13   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 25 December 2010 - 01:31

&НаСервереБезКонтекста
Функция ПолучитьЦенуНоменклатуры(Номенклатура)

Возврат Номенклатура.ЦенаПокупки;

КонецФункции

&НаКлиенте
Процедура НоменклатураПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Цена=ПолучитьЦенуНоменклатуры(Стр.Номенклатура);
КоличествоПриИзменении(Элемент);

КонецПроцедуры

&НаКлиенте
Процедура Действие(Команда)
// Вставить содержимое обработчика.
КонецПроцедуры

&НаСервере
Процедура ЗаведениеЗаявки()
НовыйДокумент = Документы.ЗаявкаНатранспорт.СоздатьДокумент();
Форма = НовыйДокумент.ПолучитьФорму("ФормаДокумента");
Форма.Открыть(); ;
КонецПроцедуры

&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)

Стр = Элементы.Товары.ТекущиеДанные;
Стр.Сумма = Стр.Количество * Стр.Цена;

Объект.СуммаДокумента=Объект.Товары.Итог("Сумма");

КонецПроцедуры

&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)

Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение И Объект.Товары.Итог("Сумма") > 1000 Тогда
Режим = РежимДиалогаВопрос.ДаНет;

Текст = "Бесплатная доставка?";
Ответ = Вопрос(Текст, Режим, 0);

Если Ответ = КодВозвратаДиалога.Да Тогда
ЗаведениеЗаявки();
КонецЕсли;
КонецЕсли;

КонецПроцедуры
вот код....

Добавлено (25.12.2010, 01:06)
---------------------------------------------
Сума больше 1000. БОЛЬШОЕ СПАСИБО!

Добавлено (25.12.2010, 01:31)
---------------------------------------------
моя база http://depositfiles....files/xcohkada7
если кто сможет помочь... уже и сам пробовал менять... ничего не помогает

  • 0

#14   Ardi

Ardi

      Генерал-полковник

    • Пользователи
    • PipPipPipPipPipPipPipPipPip
    • Сообщений: 958
    • Регистрация: 27-January 09
    • Откуда:Столица

Отправлено 25 December 2010 - 01:43

Да не волнуйся так. Тебе работодатель всего лишь коленку прострелит и денег не даст. Не очем волноваться.
  • 0

#15   дщпшые

дщпшые

      Генерал-майор

    • Пользователи
    • PipPipPipPipPipPipPip
    • Сообщений: 394
    • Регистрация: 13-June 09
    • Откуда:, , Украина

Отправлено 25 December 2010 - 12:39

vad14, Вы бы хоть обращали внимание на ошибки которые выдаются.
Эта строка должны выглядеть так:
Code
НовыйДокумент = Документы.ЗаявкаНаТраспорт.СоздатьДокумент();

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

Минута делов, а кипиша на всю ночь :))
А проблема в том, что кто-то в свойствах формы забыл указать что ПослеЗаписи надо выполнять процедуру "ПослеЗаписи"...

  • 0

#16   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 25 December 2010 - 16:17

Да утром решил проблему как и говорил дщпшые.

&НаСервере
Процедура ЗаведениеЗаявки()
НовыйДокумент = Документы.ЗаявкаНаТранспорт.СоздатьДокумент();
Форма = НовыйДокумент.ПолучитьФорму("ФормаДокумента");
Форма.Открыть(); ;
КонецПроцедуры

Тут нужно как-то сделать чтобы документ создавался на сервере а форма на клиенте. Двумя процедурами не вышло. Какие предложения?

  • 0

#17   дщпшые

дщпшые

      Генерал-майор

    • Пользователи
    • PipPipPipPipPipPipPip
    • Сообщений: 394
    • Регистрация: 13-June 09
    • Откуда:, , Украина

Отправлено 25 December 2010 - 17:07

Quote (vad14)
Тут нужно как-то сделать чтобы документ создавался на сервере а форма на клиенте.

А что бывает как-то по другому? Или поставьте вопрос по другому...
  • 0

#18   vad14

vad14

      Рядовой

    • Пользователи
    • Сообщений: 9
    • Регистрация: 24-December 10
    • Откуда:Киев , Киев , Украина

Отправлено 26 December 2010 - 18:20

Ну так подскажите каким образом это реализируется
  • 0

#19   дщпшые

дщпшые

      Генерал-майор

    • Пользователи
    • PipPipPipPipPipPipPip
    • Сообщений: 394
    • Регистрация: 13-June 09
    • Откуда:, , Украина

Отправлено 26 December 2010 - 18:47

Пока тут ноете, уже бы книжку (или одну главу) прочитали по этому поводу.
Документ по определению создается на сервере, а форма на клиенте. Что Вы хотите не понятно.

Ваша процедура только откроет форму нового документа, а как документ будет себя вести, это должно быть описано уже в форме документа.

  • 0


Обратно в Программирование и конфигурирование 1С Предприятия 8 обычный интерфейс

Похожие темы

  Название темы Автор Статистика Последнее сообщение



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных